Skip to main content

Principal

Struct Principal 

Source
pub struct Principal<I = ()> {
    pub name: String,
    pub identity: I,
}
Expand description

The identity a successful Dispatch::authenticate resolves to. Stored on the Session and fed to Dispatch::capabilities for the HELLO reply (SRV-014).

Fields§

§name: String

Product-defined principal name (user, key id, …).

§identity: I

The product’s own resolved identity — roles, permissions, quotas, tenant, whatever authorization actually needs.

Before this existed a product could only carry the name, so every privileged command had to re-resolve the user from its credential store. That was not merely a cost: the second lookup reads live state, so a user edited or deleted mid-session was evaluated against the new record. Carrying the identity here restores the other semantics — captured at AUTH, stable for the session — and makes the choice the product’s rather than an accident of the transport.

Defaults to () for products that only need the name.

Implementations§

Source§

impl Principal

Source

pub fn new(name: impl Into<String>) -> Self

A principal carrying only a name — the Identity = () case.

Source§

impl<I> Principal<I>

Source

pub fn with_identity(name: impl Into<String>, identity: I) -> Self

A principal carrying the product’s resolved identity.

Trait Implementations§

Source§

impl<I: Clone> Clone for Principal<I>

Source§

fn clone(&self) -> Principal<I>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<I: Debug> Debug for Principal<I>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<I: Eq> Eq for Principal<I>

Source§

impl<I: PartialEq> PartialEq for Principal<I>

Source§

fn eq(&self, other: &Principal<I>) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl<I: PartialEq> StructuralPartialEq for Principal<I>

Auto Trait Implementations§

§

impl<I> Freeze for Principal<I>
where I: Freeze,

§

impl<I> RefUnwindSafe for Principal<I>
where I: RefUnwindSafe,

§

impl<I> Send for Principal<I>
where I: Send,

§

impl<I> Sync for Principal<I>
where I: Sync,

§

impl<I> Unpin for Principal<I>
where I: Unpin,

§

impl<I> UnsafeUnpin for Principal<I>
where I: UnsafeUnpin,

§

impl<I> UnwindSafe for Principal<I>
where I: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.