Loading crates/s3s-policy/src/model.rs +35 −0 Original line number Diff line number Diff line //! <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html> use std::marker::PhantomData; use std::slice; use indexmap::IndexMap; use serde::{Deserialize, Serialize}; Loading Loading @@ -280,6 +281,40 @@ where } } impl<T> OneOrMore<T> { pub fn as_slice(&self) -> &[T] { match self { OneOrMore::One(t) => slice::from_ref(t), OneOrMore::More(ts) => ts, } } pub fn as_mut_slice(&mut self) -> &mut [T] { match self { OneOrMore::One(t) => slice::from_mut(t), OneOrMore::More(ts) => ts, } } } impl<T> WildcardOneOrMore<T> { pub fn as_slice(&self) -> Option<&[T]> { match self { WildcardOneOrMore::Wildcard => None, WildcardOneOrMore::One(t) => Some(slice::from_ref(t)), WildcardOneOrMore::More(ts) => Some(ts), } } pub fn as_mut_slice(&mut self) -> Option<&mut [T]> { match self { WildcardOneOrMore::Wildcard => None, WildcardOneOrMore::One(t) => Some(slice::from_mut(t)), WildcardOneOrMore::More(ts) => Some(ts), } } } #[cfg(test)] mod tests { use super::*; Loading Loading
crates/s3s-policy/src/model.rs +35 −0 Original line number Diff line number Diff line //! <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html> use std::marker::PhantomData; use std::slice; use indexmap::IndexMap; use serde::{Deserialize, Serialize}; Loading Loading @@ -280,6 +281,40 @@ where } } impl<T> OneOrMore<T> { pub fn as_slice(&self) -> &[T] { match self { OneOrMore::One(t) => slice::from_ref(t), OneOrMore::More(ts) => ts, } } pub fn as_mut_slice(&mut self) -> &mut [T] { match self { OneOrMore::One(t) => slice::from_mut(t), OneOrMore::More(ts) => ts, } } } impl<T> WildcardOneOrMore<T> { pub fn as_slice(&self) -> Option<&[T]> { match self { WildcardOneOrMore::Wildcard => None, WildcardOneOrMore::One(t) => Some(slice::from_ref(t)), WildcardOneOrMore::More(ts) => Some(ts), } } pub fn as_mut_slice(&mut self) -> Option<&mut [T]> { match self { WildcardOneOrMore::Wildcard => None, WildcardOneOrMore::One(t) => Some(slice::from_mut(t)), WildcardOneOrMore::More(ts) => Some(ts), } } } #[cfg(test)] mod tests { use super::*; Loading