libgir/
traits.rs

1pub use crate::config::{matchable::Matchable, parameter_matchable::ParameterMatchable};
2
3pub trait IntoString {
4    fn into_string(self) -> String;
5}
6
7pub trait MapAny<T> {
8    fn map_any<F: FnOnce(T) -> T>(self, op: F) -> Self;
9}
10
11impl<T> MapAny<T> for Result<T, T> {
12    fn map_any<F: FnOnce(T) -> T>(self, op: F) -> Self {
13        match self {
14            Ok(x) => Ok(op(x)),
15            Err(x) => Err(op(x)),
16        }
17    }
18}
19
20pub trait MaybeRef<T> {
21    fn maybe_ref(&self) -> Option<&T>;
22    fn to_ref(&self) -> &T;
23}
24
25pub trait MaybeRefAs {
26    fn maybe_ref_as<T>(&self) -> Option<&T>
27    where
28        Self: MaybeRef<T>;
29    fn to_ref_as<T>(&self) -> &T
30    where
31        Self: MaybeRef<T>;
32}