1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
// Copyright (c) The cargo-guppy Contributors
// SPDX-License-Identifier: MIT OR Apache-2.0
use std::fmt;
/// A descriptor for the kind of dependency.
///
/// Cargo dependencies may be one of three kinds.
#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
pub enum DependencyKind {
/// Normal dependencies.
///
/// These are specified in the `[dependencies]` section.
Normal,
/// Dependencies used for development only.
///
/// These are specified in the `[dev-dependencies]` section, and are used for tests,
/// benchmarks and similar.
Development,
/// Dependencies used for build scripts.
///
/// These are specified in the `[build-dependencies]` section.
Build,
}
impl DependencyKind {
/// A list of all the possible values of `DependencyKind`.
pub const VALUES: &'static [Self; 3] = &[
DependencyKind::Normal,
DependencyKind::Development,
DependencyKind::Build,
];
/// Returns a string representing the kind of dependency this is.
pub fn to_str(self) -> &'static str {
match self {
DependencyKind::Normal => "normal",
DependencyKind::Development => "dev",
DependencyKind::Build => "build",
}
}
}
impl fmt::Display for DependencyKind {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.to_str())
}
}