diff options
Diffstat (limited to 'components/url/lib.rs')
-rw-r--r-- | components/url/lib.rs | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/components/url/lib.rs b/components/url/lib.rs index c0a02fff9f6..415b2dd4ea6 100644 --- a/components/url/lib.rs +++ b/components/url/lib.rs @@ -19,9 +19,10 @@ extern crate url; use std::fmt; use std::net::IpAddr; +use std::ops::{Range, RangeFrom, RangeTo, RangeFull, Index}; use std::path::Path; use std::sync::Arc; -use url::{Url, Origin}; +use url::{Url, Origin, Position}; #[derive(Debug, Clone, PartialEq, Eq, Hash)] #[cfg_attr(feature = "servo", derive(HeapSizeOf, Serialize, Deserialize))] @@ -152,3 +153,31 @@ impl fmt::Display for ServoUrl { self.0.fmt(formatter) } } + +impl Index<RangeFull> for ServoUrl { + type Output = str; + fn index(&self, _: RangeFull) -> &str { + &self.0[..] + } +} + +impl Index<RangeFrom<Position>> for ServoUrl { + type Output = str; + fn index(&self, range: RangeFrom<Position>) -> &str { + &self.0[range] + } +} + +impl Index<RangeTo<Position>> for ServoUrl { + type Output = str; + fn index(&self, range: RangeTo<Position>) -> &str { + &self.0[range] + } +} + +impl Index<Range<Position>> for ServoUrl { + type Output = str; + fn index(&self, range: Range<Position>) -> &str { + &self.0[range] + } +} |