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 more