pub struct ExternalId(/* private fields */);Expand description
A validated SCIM external identifier.
ExternalId represents an optional identifier that links a SCIM resource to an external system. It enforces validation rules at construction time, ensuring that only valid external IDs can exist in the system.
§Validation Rules
- Must not be empty if provided
- Must be a valid string
- Null values are handled separately (
Option<ExternalId>)
§Examples
use scim_server::resource::value_objects::ExternalId;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Valid external ID
let ext_id = ExternalId::new("701984".to_string())?;
println!("External ID: {}", ext_id.as_str());
// Invalid external ID - returns ValidationError
let invalid = ExternalId::new("".to_string()); // Error
assert!(invalid.is_err());
Ok(())
}Implementations§
Source§impl ExternalId
impl ExternalId
Sourcepub fn new(value: String) -> ValidationResult<Self>
pub fn new(value: String) -> ValidationResult<Self>
Create a new ExternalId with validation.
This is the primary constructor that enforces all validation rules. Use this method when creating ExternalId instances from untrusted input.
§Arguments
value- The string value to validate and wrap
§Returns
Ok(ExternalId)- 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 ExternalId.
Trait Implementations§
Source§impl Clone for ExternalId
impl Clone for ExternalId
Source§fn clone(&self) -> ExternalId
fn clone(&self) -> ExternalId
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ExternalId
impl Debug for ExternalId
Source§impl<'de> Deserialize<'de> for ExternalId
impl<'de> Deserialize<'de> for ExternalId
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 Display for ExternalId
impl Display for ExternalId
Source§impl Hash for ExternalId
impl Hash for ExternalId
Source§impl PartialEq for ExternalId
impl PartialEq for ExternalId
Source§impl SchemaConstructible for ExternalId
impl SchemaConstructible for ExternalId
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 Serialize for ExternalId
impl Serialize for ExternalId
Source§impl TryFrom<&str> for ExternalId
impl TryFrom<&str> for ExternalId
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 ExternalId
impl TryFrom<String> for ExternalId
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 ExternalId
impl ValueObject for ExternalId
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 ExternalId
impl StructuralPartialEq for ExternalId
Auto Trait Implementations§
impl Freeze for ExternalId
impl RefUnwindSafe for ExternalId
impl Send for ExternalId
impl Sync for ExternalId
impl Unpin for ExternalId
impl UnwindSafe for ExternalId
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.