pub struct StreamName(/* private fields */);Expand description
Value Object: StreamName
Represents the name of an event stream in the event store. Streams are logical groupings of events, typically by entity or aggregate.
Domain Rules:
- Cannot be empty
- Must be between 1 and 256 characters
- Must follow naming convention: alphanumeric with hyphens/underscores/colons
- Case-sensitive
- Immutable once created
Common patterns:
entity-type:entity-id(e.g., “user:123”, “order:abc-456”)aggregate-type-aggregate-id(e.g., “user-123”, “order-abc-456”)
This is a Value Object:
- Defined by its value, not identity
- Immutable
- Self-validating
- Compared by value equality
Implementations§
Source§impl StreamName
impl StreamName
Sourcepub fn new(value: String) -> Result<Self>
pub fn new(value: String) -> Result<Self>
Create a new StreamName with validation
§Errors
Returns error if:
- Name is empty
- Name is longer than 256 characters
- Name contains invalid characters
§Examples
use allsource_core::domain::value_objects::StreamName;
let stream = StreamName::new("user:123".to_string()).unwrap();
assert_eq!(stream.as_str(), "user:123");Sourcepub fn for_entity(entity_type: &str, entity_id: &str) -> Result<Self>
pub fn for_entity(entity_type: &str, entity_id: &str) -> Result<Self>
Create a StreamName from entity type and entity ID
§Examples
use allsource_core::domain::value_objects::StreamName;
let stream = StreamName::for_entity("user", "123").unwrap();
assert_eq!(stream.as_str(), "user:123");Sourcepub fn into_inner(self) -> String
pub fn into_inner(self) -> String
Get the inner String (consumes self)
Sourcepub fn entity_type(&self) -> Option<&str>
pub fn entity_type(&self) -> Option<&str>
Extract entity type if stream follows “type:id” pattern
§Examples
use allsource_core::domain::value_objects::StreamName;
let stream = StreamName::new("user:123".to_string()).unwrap();
assert_eq!(stream.entity_type(), Some("user"));
let stream = StreamName::new("simple-stream".to_string()).unwrap();
assert_eq!(stream.entity_type(), None);Sourcepub fn entity_id(&self) -> Option<&str>
pub fn entity_id(&self) -> Option<&str>
Extract entity ID if stream follows “type:id” pattern
§Examples
use allsource_core::domain::value_objects::StreamName;
let stream = StreamName::new("user:123".to_string()).unwrap();
assert_eq!(stream.entity_id(), Some("123"));
let stream = StreamName::new("simple-stream".to_string()).unwrap();
assert_eq!(stream.entity_id(), None);Sourcepub fn is_entity_type(&self, entity_type: &str) -> bool
pub fn is_entity_type(&self, entity_type: &str) -> bool
Check if this stream is for a specific entity type
§Examples
use allsource_core::domain::value_objects::StreamName;
let stream = StreamName::new("user:123".to_string()).unwrap();
assert!(stream.is_entity_type("user"));
assert!(!stream.is_entity_type("order"));Sourcepub fn starts_with(&self, prefix: &str) -> bool
pub fn starts_with(&self, prefix: &str) -> bool
Check if this stream name starts with a prefix
Trait Implementations§
Source§impl AsRef<str> for StreamName
impl AsRef<str> for StreamName
Source§impl Clone for StreamName
impl Clone for StreamName
Source§fn clone(&self) -> StreamName
fn clone(&self) -> StreamName
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 StreamName
impl Debug for StreamName
Source§impl<'de> Deserialize<'de> for StreamName
impl<'de> Deserialize<'de> for StreamName
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 StreamName
impl Display for StreamName
Source§impl Hash for StreamName
impl Hash for StreamName
Source§impl PartialEq for StreamName
impl PartialEq for StreamName
Source§impl Serialize for StreamName
impl Serialize for StreamName
Source§impl TryFrom<&str> for StreamName
impl TryFrom<&str> for StreamName
Source§impl TryFrom<String> for StreamName
impl TryFrom<String> for StreamName
impl Eq for StreamName
impl StructuralPartialEq for StreamName
Auto Trait Implementations§
impl Freeze for StreamName
impl RefUnwindSafe for StreamName
impl Send for StreamName
impl Sync for StreamName
impl Unpin for StreamName
impl UnwindSafe for StreamName
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.