#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[derive(Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub enum SupplementaryGroupChoice
{
FromGroupNameInEtcGroup(GroupName),
FromGroupIdentifier(GroupIdentifier),
FromCurrentReal,
FromCurrentEffective,
FromCurrentSavedSet,
}
impl SupplementaryGroupChoice
{
#[inline(always)]
pub fn to_group_identifier(&self, etc_path: &EtcPath) -> Result<GroupIdentifier, UserAndGroupChoiceError>
{
use self::SupplementaryGroupChoice::*;
Ok
(
match self
{
&FromGroupNameInEtcGroup(ref group_name) => UserAndGroupChoice::etc_group_identifier_for_group_name(etc_path, group_name)?,
&FromGroupIdentifier(group_identifier) => group_identifier,
&FromCurrentReal => GroupIdentifier::current_real(),
&FromCurrentEffective => GroupIdentifier::current_effective(),
&FromCurrentSavedSet => GroupIdentifier::current_real_effective_and_saved_set().2,
}
)
}
}