#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
pub enum Kind {
DynamicLibrary,
Static,
Framework,
}
impl Kind {
pub const DYNAMIC_LIBRARY: &'static str = "dylib";
pub const STATIC: &'static str = "static";
pub const FRAMEWORK: &'static str = "framework";
}
impl From<Kind> for &'static str {
fn from(kind: Kind) -> Self {
match kind {
Kind::DynamicLibrary => Kind::DYNAMIC_LIBRARY,
Kind::Static => Kind::STATIC,
Kind::Framework => Kind::FRAMEWORK,
}
}
}
impl From<Kind> for String {
fn from(kind: Kind) -> Self {
let kind: &str = kind.into();
kind.into()
}
}
#[cfg(test)]
mod tests {
use super::Kind;
#[test]
fn test_into_string() {
let kind: String = Kind::DynamicLibrary.into();
assert_eq!(kind, Kind::DYNAMIC_LIBRARY);
let kind: String = Kind::Static.into();
assert_eq!(kind, Kind::STATIC);
let kind: String = Kind::Framework.into();
assert_eq!(kind, Kind::FRAMEWORK)
}
}