Skip to content

Commit a42422d

Browse files
committed
implement Encodable for Dependency
SerializedDependency can be a private implementation detail now.
1 parent 126ed9c commit a42422d

File tree

3 files changed

+24
-27
lines changed

3 files changed

+24
-27
lines changed

src/cargo/core/dependency.rs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use semver::VersionReq;
2+
use rustc_serialize::{Encoder, Encodable};
23

34
use core::{SourceId, Summary, PackageId};
45
use std::rc::Rc;
@@ -30,6 +31,22 @@ pub struct Dependency {
3031
inner: Rc<DependencyInner>,
3132
}
3233

34+
35+
#[derive(RustcEncodable)]
36+
struct SerializedDependency {
37+
name: String,
38+
req: String
39+
}
40+
41+
impl Encodable for Dependency {
42+
fn encode<S: Encoder>(&self, s: &mut S) -> Result<(), S::Error> {
43+
SerializedDependency {
44+
name: self.name().to_string(),
45+
req: self.version_req().to_string()
46+
}.encode(s)
47+
}
48+
}
49+
3350
#[derive(PartialEq, Clone, Debug, Copy)]
3451
pub enum Kind {
3552
Normal,
@@ -219,17 +236,3 @@ impl Dependency {
219236
}
220237
}
221238

222-
#[derive(PartialEq,Clone,RustcEncodable)]
223-
pub struct SerializedDependency {
224-
name: String,
225-
req: String
226-
}
227-
228-
impl SerializedDependency {
229-
pub fn from_dependency(dep: &Dependency) -> SerializedDependency {
230-
SerializedDependency {
231-
name: dep.name().to_string(),
232-
req: dep.version_req().to_string()
233-
}
234-
}
235-
}

src/cargo/core/manifest.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@ use std::fmt;
33
use std::path::{PathBuf, Path};
44

55
use semver::Version;
6-
use rustc_serialize::{Encoder,Encodable};
6+
use rustc_serialize::{Encoder, Encodable};
77

88
use core::{Dependency, PackageId, Summary};
99
use core::package_id::Metadata;
10-
use core::dependency::SerializedDependency;
1110
use util::{CargoResult, human};
1211

1312
/// Contains all the information about a package, as loaded from a Cargo.toml.
@@ -45,10 +44,10 @@ pub struct ManifestMetadata {
4544
}
4645

4746
#[derive(RustcEncodable)]
48-
struct SerializedManifest {
47+
struct SerializedManifest<'a> {
4948
name: String,
5049
version: String,
51-
dependencies: Vec<SerializedDependency>,
50+
dependencies: &'a [Dependency],
5251
targets: Vec<Target>,
5352
}
5453

@@ -57,9 +56,7 @@ impl Encodable for Manifest {
5756
SerializedManifest {
5857
name: self.summary.name().to_string(),
5958
version: self.summary.version().to_string(),
60-
dependencies: self.summary.dependencies().iter().map(|d| {
61-
SerializedDependency::from_dependency(d)
62-
}).collect(),
59+
dependencies: self.summary.dependencies(),
6360
targets: self.targets.clone(),
6461
}.encode(s)
6562
}

src/cargo/core/package.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ use semver::Version;
66

77
use core::{Dependency, Manifest, PackageId, SourceId, Registry, Target, Summary, Metadata};
88
use ops;
9-
use core::dependency::SerializedDependency;
109
use util::{CargoResult, graph, Config};
1110
use rustc_serialize::{Encoder,Encodable};
1211
use core::source::Source;
@@ -24,10 +23,10 @@ pub struct Package {
2423
}
2524

2625
#[derive(RustcEncodable)]
27-
struct SerializedPackage {
26+
struct SerializedPackage<'a> {
2827
name: String,
2928
version: String,
30-
dependencies: Vec<SerializedDependency>,
29+
dependencies: &'a [Dependency],
3130
targets: Vec<Target>,
3231
manifest_path: String,
3332
}
@@ -41,9 +40,7 @@ impl Encodable for Package {
4140
SerializedPackage {
4241
name: package_id.name().to_string(),
4342
version: package_id.version().to_string(),
44-
dependencies: summary.dependencies().iter().map(|d| {
45-
SerializedDependency::from_dependency(d)
46-
}).collect(),
43+
dependencies: summary.dependencies(),
4744
targets: manifest.targets().to_vec(),
4845
manifest_path: self.manifest_path.display().to_string()
4946
}.encode(s)

0 commit comments

Comments
 (0)