pub struct Resolver { /* private fields */ }Implementations§
Source§impl Resolver
impl Resolver
Sourcepub fn resolve(&self, url: &str) -> Result<Vec<Rc<Module>>, Box<dyn Error>>
pub fn resolve(&self, url: &str) -> Result<Vec<Rc<Module>>, Box<dyn Error>>
Examples found in repository?
examples/resolver.rs (line 158)
115fn main() {
116 let mut builder = ResolverBuilder::new();
117
118 for module in YAMLS.split("---") {
119 let module: serde_yml::Mapping = serde_yml::from_str(module).unwrap();
120 let name = &module["name"].as_str().unwrap();
121
122 if let Some(protocols) = &module["handles"]["url_protocols"].as_sequence() {
123 for protocol in protocols.iter() {
124 builder
125 .insert_protocol(name, protocol.as_str().unwrap())
126 .unwrap();
127 }
128 }
129
130 if let Some(prefixes) = &module["handles"]["url_prefixes"].as_sequence() {
131 for prefix in prefixes.iter() {
132 builder
133 .insert_prefix(name, prefix.as_str().unwrap())
134 .unwrap()
135 }
136 }
137
138 if let Some(patterns) = &module["handles"]["url_patterns"].as_sequence() {
139 for pattern in patterns.iter() {
140 builder
141 .insert_pattern(name, pattern.as_str().unwrap())
142 .unwrap()
143 }
144 }
145 }
146
147 let resolver = builder.build().unwrap();
148
149 let mut stdout = std::io::stdout().lock();
150 let mut lines = std::io::stdin().lines();
151 loop {
152 stdout.write_all(b"query > ").unwrap();
153 stdout.flush().unwrap();
154
155 let Some(Ok(query)) = lines.next() else {
156 break;
157 };
158 let answers = resolver.resolve(&query).unwrap();
159 println!("answers:");
160 for answer in answers {
161 println!(" - {}", answer.name);
162 }
163 }
164}pub fn find( &self, url: &str, ) -> Result<impl Iterator<Item = Rc<Module>>, Box<dyn Error>>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Resolver
impl RefUnwindSafe for Resolver
impl !Send for Resolver
impl !Sync for Resolver
impl Unpin for Resolver
impl UnwindSafe for Resolver
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more