use crate::rust::Toolchain;
#[derive(Clone, Debug, PartialEq)]
pub struct RustRelease {
release: rust_releases::Release,
target: &'static str,
components: &'static [&'static str],
}
impl RustRelease {
pub fn new(
release: rust_releases::Release,
target: &'static str,
components: &'static [&'static str],
) -> Self {
Self {
release,
target,
components,
}
}
pub fn to_toolchain_spec(&self) -> Toolchain {
let version = self.release.version();
Toolchain::new(version.clone(), self.target, self.components)
}
}
#[cfg(test)]
mod tests {
use crate::rust::RustRelease;
use crate::rust::Toolchain;
use rust_releases::semver;
#[test]
fn spec() {
let version = semver::Version::new(1, 2, 3);
let rust_release = RustRelease::new(
rust_releases::Release::new_stable(version.clone()),
"x",
&[],
);
let spec = rust_release.to_toolchain_spec();
let expected = Toolchain::new(version, "x", &[]);
assert_eq!(spec, expected);
}
}