Skip to main content

alpm_types/package/
installation.rs

1//! Package installation handling.
2
3/// Represents the reason why a package was installed.
4///
5/// # Examples
6///
7/// Parsing from strings:
8///
9/// ```
10/// use std::str::FromStr;
11///
12/// use alpm_types::PackageInstallReason;
13///
14/// # fn main() -> Result<(), alpm_types::Error> {
15/// assert_eq!(
16///     PackageInstallReason::from_str("0")?,
17///     PackageInstallReason::Explicit
18/// );
19/// assert_eq!(
20///     PackageInstallReason::from_str("1")?,
21///     PackageInstallReason::Depend
22/// );
23///
24/// // Invalid values return an error.
25/// assert!(PackageInstallReason::from_str("2").is_err());
26/// # Ok(())
27/// # }
28/// ```
29///
30/// Displaying and serializing:
31///
32/// ```
33/// use alpm_types::PackageInstallReason;
34///
35/// # fn main() -> Result<(), alpm_types::Error> {
36/// assert_eq!(PackageInstallReason::Explicit.to_string(), "0");
37/// # #[cfg(feature = "serde")]
38/// # {
39/// assert_eq!(
40///     serde_json::to_string(&PackageInstallReason::Depend).expect("Serialization failed"),
41///     "\"Depend\""
42/// );
43/// # }
44/// # Ok(())
45/// # }
46/// ```
47#[derive(
48    Clone, Copy, Debug, Default, PartialEq, Eq, strum::EnumString, strum::Display, strum::AsRefStr,
49)]
50#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
51#[repr(u8)]
52pub enum PackageInstallReason {
53    /// Explicitly requested by the user.
54    #[default]
55    #[strum(to_string = "0")]
56    Explicit = 0,
57    /// Installed as a dependency for another package.
58    #[strum(to_string = "1")]
59    Depend = 1,
60}