arch_pkg_text/value/
dependency_and_reason.rs

1use super::{Dependency, DependencyAndReason, DependencyReason};
2
3impl<'a> DependencyAndReason<'a> {
4    /// Extract [`Dependency`] and [`DependencyReason`].
5    ///
6    /// ```
7    /// # use arch_pkg_text::value::{Dependency, DependencyAndReason, DependencyReason};
8    /// # use pretty_assertions::assert_eq;
9    /// let depend_and_reason = DependencyAndReason("lldb: rust-lldb script");
10    /// let (depend, reason) = depend_and_reason.components();
11    /// assert_eq!(depend, Dependency("lldb"));
12    /// assert_eq!(reason, Some(DependencyReason("rust-lldb script")));
13    /// ```
14    pub fn components(&self) -> (Dependency<'a>, Option<DependencyReason<'a>>) {
15        // split with ": " instead of ':' because of epoch in version
16        match self.split_once(": ") {
17            Some((depend, reason)) => (
18                Dependency(depend.trim()),
19                Some(DependencyReason(reason.trim())),
20            ),
21            None => (Dependency(self.trim()), None),
22        }
23    }
24}