pedant_core/resolution/rust/
dependency.rs1use std::sync::Arc;
4
5use super::identity::{PackageId, TargetId};
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
9pub enum CargoDependencyKind {
10 Normal,
12 Development,
14 Build,
16}
17
18#[derive(Debug, Clone, PartialEq, Eq)]
21pub enum DependencyActivation {
22 Always,
24 Conditional(Arc<str>),
26}
27
28#[derive(Debug)]
30pub struct RustDependency {
31 pub(super) source: PackageId,
32 pub(super) name: Arc<str>,
33 pub(super) package_name: Arc<str>,
34 pub(super) kind: CargoDependencyKind,
35 pub(super) activation: DependencyActivation,
36 pub(super) package: Option<PackageId>,
37 pub(super) library: Option<TargetId>,
38}
39
40impl RustDependency {
41 pub fn source(&self) -> PackageId {
43 self.source
44 }
45
46 pub fn name(&self) -> &str {
48 &self.name
49 }
50
51 pub fn package_name(&self) -> &str {
53 &self.package_name
54 }
55
56 pub fn kind(&self) -> CargoDependencyKind {
58 self.kind
59 }
60
61 pub fn activation(&self) -> &DependencyActivation {
63 &self.activation
64 }
65
66 pub fn package(&self) -> Option<PackageId> {
68 self.package
69 }
70
71 pub fn library(&self) -> Option<TargetId> {
73 self.library
74 }
75}