File tree 1 file changed +31
-0
lines changed
1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change 1
1
//! CSS selectors.
2
2
3
+ use std:: convert:: TryFrom ;
3
4
use std:: fmt;
4
5
5
6
use smallvec:: SmallVec ;
@@ -129,3 +130,33 @@ impl cssparser::ToCss for PseudoElement {
129
130
dest. write_str ( "" )
130
131
}
131
132
}
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
+ }
You can’t perform that action at this time.
0 commit comments