pub struct SessionPath {
pub user: String,
pub machine: String,
pub session: String,
}Expand description
A fully-qualified live participant path, {user}/{machine}/{session} (DESIGN.md §5).
Every message’s sender is a full path, so a reply or whisper target is always
unambiguous. The server component that disambiguates a multi-homed session
(DESIGN.md §8) is carried alongside a path, not embedded in it.
Fields§
§user: StringThe account name (unique per server).
machine: StringThe enrolled machine (its own keypair) the session runs on.
session: StringThe live-session handle (--as, defaulting to the repo/dir name).
Implementations§
Source§impl SessionPath
impl SessionPath
Sourcepub fn new(
user: impl Into<String>,
machine: impl Into<String>,
session: impl Into<String>,
) -> Self
pub fn new( user: impl Into<String>, machine: impl Into<String>, session: impl Into<String>, ) -> Self
Builds a path from its three components.
Sourcepub fn validate_component(component: &str) -> Result<(), ParsePathError>
pub fn validate_component(component: &str) -> Result<(), ParsePathError>
Validates one path component (a username, machine name, or session handle): it must be
non-empty and free of the path separator, so the assembled {user}/{machine}/{session}
stays unambiguous and from-attribution cannot be spoofed (DESIGN.md §5).
§Errors
Returns ParsePathError::Malformed if the component is empty or contains the separator.
Trait Implementations§
Source§impl Clone for SessionPath
impl Clone for SessionPath
Source§fn clone(&self) -> SessionPath
fn clone(&self) -> SessionPath
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SessionPath
impl Debug for SessionPath
Source§impl<'de> Deserialize<'de> for SessionPath
impl<'de> Deserialize<'de> for SessionPath
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>,
Source§impl Display for SessionPath
impl Display for SessionPath
impl Eq for SessionPath
Source§impl FromStr for SessionPath
impl FromStr for SessionPath
Source§impl Hash for SessionPath
impl Hash for SessionPath
Source§impl PartialEq for SessionPath
impl PartialEq for SessionPath
Source§fn eq(&self, other: &SessionPath) -> bool
fn eq(&self, other: &SessionPath) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for SessionPath
impl Serialize for SessionPath
impl StructuralPartialEq for SessionPath
Auto Trait Implementations§
impl Freeze for SessionPath
impl RefUnwindSafe for SessionPath
impl Send for SessionPath
impl Sync for SessionPath
impl Unpin for SessionPath
impl UnsafeUnpin for SessionPath
impl UnwindSafe for SessionPath
Blanket Implementations§
impl<T> AsyncFriendly for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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
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>
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>
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request