}
impl<'a, T: Source + ?Sized + 'a> Source for Box<T> {
- /// Forwards to `Source::source_id`
- fn source_id(&self) -> &SourceId {
- (**self).source_id()
- }
-
/// Forwards to `Source::supports_checksums`
fn supports_checksums(&self) -> bool {
(**self).supports_checksums()
(**self).query(dep, f)
}
+ /// Forwards to `Source::source_id`
+ fn source_id(&self) -> &SourceId {
+ (**self).source_id()
+ }
+
/// Forwards to `Source::update`
fn update(&mut self) -> CargoResult<()> {
(**self).update()
}
impl<'cfg> Source for DirectorySource<'cfg> {
- fn source_id(&self) -> &SourceId {
- &self.source_id
+ fn query(&mut self, dep: &Dependency, f: &mut FnMut(Summary)) -> CargoResult<()> {
+ let packages = self.packages.values().map(|p| &p.0);
+ let matches = packages.filter(|pkg| dep.matches(pkg.summary()));
+ for summary in matches.map(|pkg| pkg.summary().clone()) {
+ f(summary);
+ }
+ Ok(())
}
fn supports_checksums(&self) -> bool {
true
}
- fn query(&mut self, dep: &Dependency, f: &mut FnMut(Summary)) -> CargoResult<()> {
- let packages = self.packages.values().map(|p| &p.0);
- let matches = packages.filter(|pkg| dep.matches(pkg.summary()));
- for summary in matches.map(|pkg| pkg.summary().clone()) {
- f(summary);
- }
- Ok(())
+ fn source_id(&self) -> &SourceId {
+ &self.source_id
}
fn update(&mut self) -> CargoResult<()> {
}
impl<'cfg> Source for GitSource<'cfg> {
- fn source_id(&self) -> &SourceId {
- &self.source_id
+ fn query(&mut self, dep: &Dependency, f: &mut FnMut(Summary)) -> CargoResult<()> {
+ let src = self.path_source
+ .as_mut()
+ .expect("BUG: update() must be called before query()");
+ src.query(dep, f)
}
fn supports_checksums(&self) -> bool {
true
}
- fn query(&mut self, dep: &Dependency, f: &mut FnMut(Summary)) -> CargoResult<()> {
- let src = self.path_source
- .as_mut()
- .expect("BUG: update() must be called before query()");
- src.query(dep, f)
+ fn source_id(&self) -> &SourceId {
+ &self.source_id
}
fn update(&mut self) -> CargoResult<()> {
}
impl<'cfg> Source for PathSource<'cfg> {
- fn source_id(&self) -> &SourceId {
- &self.source_id
+ fn query(&mut self, dep: &Dependency, f: &mut FnMut(Summary)) -> CargoResult<()> {
+ for s in self.packages.iter().map(|p| p.summary()) {
+ if dep.matches(s) {
+ f(s.clone())
+ }
+ }
+ Ok(())
}
fn supports_checksums(&self) -> bool {
false
}
- fn query(&mut self, dep: &Dependency, f: &mut FnMut(Summary)) -> CargoResult<()> {
- for s in self.packages.iter().map(|p| p.summary()) {
- if dep.matches(s) {
- f(s.clone())
- }
- }
- Ok(())
+ fn source_id(&self) -> &SourceId {
+ &self.source_id
}
fn update(&mut self) -> CargoResult<()> {
}
impl<'cfg> Source for RegistrySource<'cfg> {
- fn source_id(&self) -> &SourceId {
- &self.source_id
- }
-
- fn supports_checksums(&self) -> bool {
- true
- }
-
- fn requires_precise(&self) -> bool {
- false
- }
-
fn query(&mut self, dep: &Dependency, f: &mut FnMut(Summary)) -> CargoResult<()> {
// If this is a precise dependency, then it came from a lockfile and in
// theory the registry is known to contain this version. If, however, we
self.index.query(dep, &mut *self.ops, f)
}
+ fn supports_checksums(&self) -> bool {
+ true
+ }
+
+ fn requires_precise(&self) -> bool {
+ false
+ }
+
+ fn source_id(&self) -> &SourceId {
+ &self.source_id
+ }
+
fn update(&mut self) -> CargoResult<()> {
// If we have an imprecise version then we don't know what we're going
// to look for, so we always attempt to perform an update here.
}
impl<'cfg> Source for ReplacedSource<'cfg> {
- fn source_id(&self) -> &SourceId {
- &self.to_replace
- }
-
- fn supports_checksums(&self) -> bool {
- self.inner.supports_checksums()
- }
-
- fn requires_precise(&self) -> bool {
- self.inner.requires_precise()
- }
-
fn query(&mut self, dep: &Dependency, f: &mut FnMut(Summary)) -> CargoResult<()> {
let (replace_with, to_replace) = (&self.replace_with, &self.to_replace);
let dep = dep.clone().map_source(to_replace, replace_with);
Ok(())
}
+ fn supports_checksums(&self) -> bool {
+ self.inner.supports_checksums()
+ }
+
+ fn requires_precise(&self) -> bool {
+ self.inner.requires_precise()
+ }
+
+ fn source_id(&self) -> &SourceId {
+ &self.to_replace
+ }
+
fn update(&mut self) -> CargoResult<()> {
self.inner
.update()