pub struct ArticleId(/* private fields */);Expand description
Value Object: ArticleId
Represents a unique identifier for an article in the paywall system. Articles are identified by a slug or URL-safe identifier provided by the creator.
Domain Rules:
- Cannot be empty
- Must be between 1 and 256 characters
- Must be URL-safe (alphanumeric, hyphens, underscores only)
- Case-sensitive
- Immutable once created
This is a Value Object:
- Defined by its value, not identity
- Immutable
- Self-validating
- Compared by value equality
Implementations§
Source§impl ArticleId
impl ArticleId
Sourcepub fn new(value: String) -> Result<Self>
pub fn new(value: String) -> Result<Self>
Create a new ArticleId with validation
§Errors
Returns error if:
- ID is empty
- ID is longer than 256 characters
- ID contains invalid characters (only a-z, A-Z, 0-9, -, _ allowed)
§Examples
use allsource_core::domain::value_objects::ArticleId;
let article_id = ArticleId::new("my-awesome-article".to_string()).unwrap();
assert_eq!(article_id.as_str(), "my-awesome-article");Sourcepub fn into_inner(self) -> String
pub fn into_inner(self) -> String
Get the inner String (consumes self)
Sourcepub fn starts_with(&self, prefix: &str) -> bool
pub fn starts_with(&self, prefix: &str) -> bool
Check if this article ID starts with a specific prefix
Trait Implementations§
Source§impl<'de> Deserialize<'de> for ArticleId
impl<'de> Deserialize<'de> for ArticleId
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
impl Eq for ArticleId
impl StructuralPartialEq for ArticleId
Auto Trait Implementations§
impl Freeze for ArticleId
impl RefUnwindSafe for ArticleId
impl Send for ArticleId
impl Sync for ArticleId
impl Unpin for ArticleId
impl UnwindSafe for ArticleId
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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>
Converts
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>
Converts
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.