pub struct GroupMember { /* private fields */ }Expand description
A value object representing a single group member in SCIM.
This type encapsulates the relationship between a group and its member, including the member’s resource ID, display name, and member type.
§Examples
use scim_server::resource::value_objects::{GroupMember, ResourceId};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let member_id = ResourceId::new("user-123".to_string())?;
let member = GroupMember::new(
member_id,
Some("John Doe".to_string()),
Some("User".to_string())
)?;
assert_eq!(member.display_name(), Some("John Doe"));
assert_eq!(member.member_type(), Some("User"));
Ok(())
}Implementations§
Source§impl GroupMember
impl GroupMember
Sourcepub fn new(
value: ResourceId,
display: Option<String>,
member_type: Option<String>,
) -> ValidationResult<Self>
pub fn new( value: ResourceId, display: Option<String>, member_type: Option<String>, ) -> ValidationResult<Self>
Creates a new group member with validation.
§Arguments
value- The resource ID of the memberdisplay- Optional display name for the membermember_type- Optional type of the member (e.g., “User”, “Group”)
§Returns
Ok(GroupMember)- Successfully created group memberErr(ValidationError)- If validation fails
§Examples
use scim_server::resource::value_objects::{GroupMember, ResourceId};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let member_id = ResourceId::new("user-123".to_string())?;
let member = GroupMember::new(
member_id,
Some("John Doe".to_string()),
Some("User".to_string())
)?;
Ok(())
}Sourcepub fn new_user(
value: ResourceId,
display: Option<String>,
) -> ValidationResult<Self>
pub fn new_user( value: ResourceId, display: Option<String>, ) -> ValidationResult<Self>
Creates a new group member for a User resource.
§Arguments
value- The resource ID of the userdisplay- Optional display name for the user
§Returns
A group member with member_type set to “User”
§Examples
use scim_server::resource::value_objects::{GroupMember, ResourceId};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let user_id = ResourceId::new("user-123".to_string())?;
let member = GroupMember::new_user(user_id, Some("John Doe".to_string()))?;
assert_eq!(member.member_type(), Some("User"));
Ok(())
}Sourcepub fn new_group(
value: ResourceId,
display: Option<String>,
) -> ValidationResult<Self>
pub fn new_group( value: ResourceId, display: Option<String>, ) -> ValidationResult<Self>
Creates a new group member for a Group resource.
§Arguments
value- The resource ID of the groupdisplay- Optional display name for the group
§Returns
A group member with member_type set to “Group”
§Examples
use scim_server::resource::value_objects::{GroupMember, ResourceId};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let group_id = ResourceId::new("group-456".to_string())?;
let member = GroupMember::new_group(group_id, Some("Admin Group".to_string()))?;
assert_eq!(member.member_type(), Some("Group"));
Ok(())
}Sourcepub fn value(&self) -> &ResourceId
pub fn value(&self) -> &ResourceId
Creates a new group member without validation for internal use.
This method bypasses validation and should only be used internally where the inputs are already known to be valid.
§Arguments
Returns the resource ID of the member.
§Examples
use scim_server::resource::value_objects::{GroupMember, ResourceId};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let user_id = ResourceId::new("user-123".to_string())?;
let member = GroupMember::new_user(user_id, None)?;
let id = member.value();
println!("Member ID: {}", id.as_str());
Ok(())
}Sourcepub fn display_name(&self) -> Option<&str>
pub fn display_name(&self) -> Option<&str>
Returns the display name of the member, if set.
§Examples
use scim_server::resource::value_objects::{GroupMember, ResourceId};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let user_id = ResourceId::new("user-123".to_string())?;
let member = GroupMember::new_user(user_id, Some("John Doe".to_string()))?;
if let Some(name) = member.display_name() {
println!("Member name: {}", name);
}
Ok(())
}Sourcepub fn member_type(&self) -> Option<&str>
pub fn member_type(&self) -> Option<&str>
Returns the member type, if set.
§Examples
use scim_server::resource::value_objects::{GroupMember, ResourceId};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let user_id = ResourceId::new("user-123".to_string())?;
let member = GroupMember::new_user(user_id, None)?;
if let Some(mtype) = member.member_type() {
println!("Member type: {}", mtype);
}
Ok(())
}Sourcepub fn is_user(&self) -> bool
pub fn is_user(&self) -> bool
Returns true if this member represents a User resource.
§Examples
use scim_server::resource::value_objects::{GroupMember, ResourceId};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let user_id = ResourceId::new("user-123".to_string())?;
let user_member = GroupMember::new_user(user_id, None)?;
assert!(user_member.is_user());
Ok(())
}Sourcepub fn is_group(&self) -> bool
pub fn is_group(&self) -> bool
Returns true if this member represents a Group resource.
§Examples
use scim_server::resource::value_objects::{GroupMember, ResourceId};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let group_id = ResourceId::new("group-456".to_string())?;
let group_member = GroupMember::new_group(group_id, None)?;
assert!(group_member.is_group());
Ok(())
}Sourcepub fn effective_display_name(&self) -> &str
pub fn effective_display_name(&self) -> &str
Returns the effective display name for the member.
This returns the display name if set, otherwise falls back to the resource ID.
§Examples
use scim_server::resource::value_objects::{GroupMember, ResourceId};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let user_id = ResourceId::new("user-123".to_string())?;
let member_with_name = GroupMember::new_user(user_id.clone(), Some("John".to_string()))?;
assert_eq!(member_with_name.effective_display_name(), "John");
let member_without_name = GroupMember::new_user(user_id, None)?;
assert_eq!(member_without_name.effective_display_name(), "user-123");
Ok(())
}Trait Implementations§
Source§impl Clone for GroupMember
impl Clone for GroupMember
Source§fn clone(&self) -> GroupMember
fn clone(&self) -> GroupMember
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for GroupMember
impl Debug for GroupMember
Source§impl<'de> Deserialize<'de> for GroupMember
impl<'de> Deserialize<'de> for GroupMember
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Display for GroupMember
impl Display for GroupMember
Source§impl PartialEq for GroupMember
impl PartialEq for GroupMember
Source§impl Serialize for GroupMember
impl Serialize for GroupMember
impl StructuralPartialEq for GroupMember
Auto Trait Implementations§
impl Freeze for GroupMember
impl RefUnwindSafe for GroupMember
impl Send for GroupMember
impl Sync for GroupMember
impl Unpin for GroupMember
impl UnwindSafe for GroupMember
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more