#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum Channel {
Stable,
Beta,
Dev,
Canary,
}
impl Channel {
pub(crate) fn as_cft_str(self) -> &'static str {
match self {
Channel::Stable => "Stable",
Channel::Beta => "Beta",
Channel::Dev => "Dev",
Channel::Canary => "Canary",
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum VersionSpec {
Latest,
Stable,
Channel(Channel),
Explicit(String),
}
#[cfg(test)]
#[allow(clippy::panic, clippy::unwrap_used)]
mod tests {
use super::*;
#[test]
fn channel_variants_construct() {
let _ = Channel::Stable;
let _ = Channel::Beta;
let _ = Channel::Dev;
let _ = Channel::Canary;
}
#[test]
fn channel_as_cft_str_matches_manifest_keys() {
assert_eq!(Channel::Stable.as_cft_str(), "Stable");
assert_eq!(Channel::Beta.as_cft_str(), "Beta");
assert_eq!(Channel::Dev.as_cft_str(), "Dev");
assert_eq!(Channel::Canary.as_cft_str(), "Canary");
}
#[test]
fn version_spec_variants_construct() {
let _ = VersionSpec::Latest;
let _ = VersionSpec::Stable;
let _ = VersionSpec::Channel(Channel::Stable);
let _ = VersionSpec::Explicit("126.0.6478.182".into());
}
#[test]
fn version_spec_is_clone() {
let v = VersionSpec::Explicit("126.0.6478.182".into());
let cloned = v.clone();
assert_eq!(v, cloned);
}
}