diff --git a/src/range.rs b/src/range.rs index 4a98dee..9e4bf78 100644 --- a/src/range.rs +++ b/src/range.rs @@ -1,3 +1,8 @@ +use std::{ + convert::{TryFrom, TryInto}, + num::TryFromIntError, +}; + use cmp::Ordering; use { @@ -392,6 +397,17 @@ where } } +impl TryFrom> for TextRange { + type Error = TryFromIntError; + #[inline] + fn try_from(r: Range) -> Result { + let start = r.start.try_into()?; + let end = r.end.try_into()?; + assert!(start <= end); + Ok(Self::new(start, end)) + } +} + macro_rules! ops { (impl $Op:ident for TextRange by fn $f:ident = $op:tt) => { impl $Op<&TextSize> for TextRange {