Skip to content

Commit 3bb3897

Browse files
author
Sven
authored
Merge pull request #39 from spegoraro/selector-conversions
Add type conversion from &str to Selector
2 parents e3f6572 + 1f6184f commit 3bb3897

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

src/selector.rs

+31
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
//! CSS selectors.
22
3+
use std::convert::TryFrom;
34
use std::fmt;
45

56
use smallvec::SmallVec;
@@ -129,3 +130,33 @@ impl cssparser::ToCss for PseudoElement {
129130
dest.write_str("")
130131
}
131132
}
133+
134+
impl<'i> TryFrom<&'i str> for Selector {
135+
type Error = cssparser::ParseError<'i, SelectorParseErrorKind<'i>>;
136+
137+
fn try_from(s: &'i str) -> Result<Self, Self::Error> {
138+
Selector::parse(s)
139+
}
140+
}
141+
142+
#[cfg(test)]
143+
mod tests {
144+
use super::*;
145+
use std::convert::TryInto;
146+
147+
#[test]
148+
fn selector_conversions() {
149+
let s = "#testid.testclass";
150+
let _sel: Selector = s.try_into().unwrap();
151+
152+
let s = s.to_owned();
153+
let _sel: Selector = (*s).try_into().unwrap();
154+
}
155+
156+
#[test]
157+
#[should_panic]
158+
fn invalid_selector_conversions() {
159+
let s = "<failing selector>";
160+
let _sel: Selector = s.try_into().unwrap();
161+
}
162+
}

0 commit comments

Comments
 (0)