arch_pkg_text/value/
dependency_and_reason.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use super::{Dependency, DependencyAndReason, DependencyReason};

impl<'a> DependencyAndReason<'a> {
    /// Extract [`Dependency`] and [`DependencyReason`].
    ///
    /// ```
    /// # use arch_pkg_text::value::{Dependency, DependencyAndReason, DependencyReason};
    /// # use pretty_assertions::assert_eq;
    /// let depend_and_reason = DependencyAndReason("lldb: rust-lldb script");
    /// let (depend, reason) = depend_and_reason.components();
    /// assert_eq!(depend, Dependency("lldb"));
    /// assert_eq!(reason, Some(DependencyReason("rust-lldb script")));
    /// ```
    pub fn components(&self) -> (Dependency<'a>, Option<DependencyReason<'a>>) {
        // split with ": " instead of ':' because of epoch in version
        match self.split_once(": ") {
            Some((depend, reason)) => (
                Dependency(depend.trim()),
                Some(DependencyReason(reason.trim())),
            ),
            None => (Dependency(self.trim()), None),
        }
    }
}