pub struct UserName(/* private fields */);Expand description
A validated SCIM user name.
UserName represents a unique identifier for a SCIM user. It enforces validation rules at construction time, ensuring that only valid user names can exist in the system.
§Validation Rules
- Must not be empty
- Must be a valid string
- Future: May include character set restrictions, length limits, etc.
§Examples
use scim_server::resource::value_objects::UserName;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Valid user name
let username = UserName::new("bjensen@example.com".to_string())?;
println!("User name: {}", username.as_str());
// Invalid user name - returns ValidationError
let invalid = UserName::new("".to_string()); // Error
assert!(invalid.is_err());
Ok(())
}Implementations§
Source§impl UserName
impl UserName
Sourcepub fn new(value: String) -> ValidationResult<Self>
pub fn new(value: String) -> ValidationResult<Self>
Create a new UserName with validation.
This is the primary constructor that enforces all validation rules. Use this method when creating UserName instances from untrusted input.
§Arguments
value- The string value to validate and wrap
§Returns
Ok(UserName)- If the value is validErr(ValidationError)- If the value violates validation rules
Sourcepub fn into_string(self) -> String
pub fn into_string(self) -> String
Get the owned string value of the UserName.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for UserName
impl<'de> Deserialize<'de> for UserName
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>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl SchemaConstructible for UserName
impl SchemaConstructible for UserName
Source§fn from_schema_and_value(
definition: &AttributeDefinition,
value: &Value,
) -> ValidationResult<Self>
fn from_schema_and_value( definition: &AttributeDefinition, value: &Value, ) -> ValidationResult<Self>
Create a value object from a JSON value and schema definition
Source§fn can_construct_from(definition: &AttributeDefinition) -> bool
fn can_construct_from(definition: &AttributeDefinition) -> bool
Check if this type can handle the given attribute definition
Source§fn constructor_priority() -> u8
fn constructor_priority() -> u8
Get the priority for this constructor (higher = preferred)
Used when multiple constructors might handle the same definition
Source§impl TryFrom<&str> for UserName
impl TryFrom<&str> for UserName
Source§type Error = ValidationError
type Error = ValidationError
The type returned in the event of a conversion error.
Source§fn try_from(value: &str) -> ValidationResult<Self>
fn try_from(value: &str) -> ValidationResult<Self>
Performs the conversion.
Source§impl TryFrom<String> for UserName
impl TryFrom<String> for UserName
Source§type Error = ValidationError
type Error = ValidationError
The type returned in the event of a conversion error.
Source§fn try_from(value: String) -> ValidationResult<Self>
fn try_from(value: String) -> ValidationResult<Self>
Performs the conversion.
Source§impl ValueObject for UserName
impl ValueObject for UserName
Source§fn attribute_type(&self) -> AttributeType
fn attribute_type(&self) -> AttributeType
Get the SCIM attribute type this value object represents
Source§fn attribute_name(&self) -> &str
fn attribute_name(&self) -> &str
Get the schema attribute name this value object corresponds to
Source§fn to_json(&self) -> ValidationResult<Value>
fn to_json(&self) -> ValidationResult<Value>
Serialize the value object to JSON
Source§fn validate_against_schema(
&self,
definition: &AttributeDefinition,
) -> ValidationResult<()>
fn validate_against_schema( &self, definition: &AttributeDefinition, ) -> ValidationResult<()>
Validate the value object against a schema definition
Source§fn as_json_value(&self) -> Value
fn as_json_value(&self) -> Value
Get the raw value as a JSON Value for schema-agnostic operations
Source§fn supports_definition(&self, definition: &AttributeDefinition) -> bool
fn supports_definition(&self, definition: &AttributeDefinition) -> bool
Check if this value object supports the given attribute definition
Source§fn clone_boxed(&self) -> Box<dyn ValueObject>
fn clone_boxed(&self) -> Box<dyn ValueObject>
Clone the value object as a boxed trait object
impl Eq for UserName
impl StructuralPartialEq for UserName
Auto Trait Implementations§
impl Freeze for UserName
impl RefUnwindSafe for UserName
impl Send for UserName
impl Sync for UserName
impl Unpin for UserName
impl UnwindSafe for UserName
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> TenantValidator for T
impl<T> TenantValidator for T
Source§fn validate_tenant_context(
&self,
expected_tenant_id: &str,
context: &RequestContext,
) -> Result<(), String>
fn validate_tenant_context( &self, expected_tenant_id: &str, context: &RequestContext, ) -> Result<(), String>
Validate that the context has the expected tenant.
Source§fn validate_single_tenant_context(
&self,
context: &RequestContext,
) -> Result<(), String>
fn validate_single_tenant_context( &self, context: &RequestContext, ) -> Result<(), String>
Validate that the context is for single-tenant operation.
Source§fn require_tenant_context(&self, context: &RequestContext) -> Result<(), String>
fn require_tenant_context(&self, context: &RequestContext) -> Result<(), String>
Extract tenant context or return error for multi-tenant operations.