Skip to main content

CapabilitySet

Struct CapabilitySet 

Source
pub struct CapabilitySet(/* private fields */);
Expand description

A set of capabilities agreed between two peers.

Thin wrapper around BTreeSet<Capability> whose only job is to name the CapabilitySet::intersect operation that both clients and servers perform on handshake: each side advertises the capabilities it supports, and the intersection is the set both agree to use for the rest of the session.

This type stays pure-data (no network, no HTTP) so both mnem http and mnem-transport::client can consume it.

Implementations§

Source§

impl CapabilitySet

Source

pub fn new() -> Self

Empty capability set.

Source

pub fn with_caps<I: IntoIterator<Item = Capability>>(caps: I) -> Self

Build from any capability iterator. Duplicates are collapsed.

Source

pub fn all_known() -> Self

Every capability this build knows about. Equivalent to with_caps(Capability::all().iter().copied()) but allocates once rather than walking a slice.

Source

pub fn parse(s: &str) -> Self

Parse from the comma-separated wire form; unknown entries are dropped (forward-compat, same rule as parse_capabilities).

Source

pub fn serialize(&self) -> String

Serialize to the comma-separated wire form, ascending order.

Source

pub fn intersect(&self, other: &Self) -> Self

Capability intersection: the set of capabilities both peers advertised. This is the agreed-upon feature set for the remainder of the session.

intersect(A, B) = { c | c in A and c in B }
Source

pub fn contains(&self, cap: Capability) -> bool

True if the given capability is in this set.

Source

pub fn len(&self) -> usize

Number of capabilities in the set.

Source

pub fn is_empty(&self) -> bool

True iff the set has no capabilities.

Source

pub const fn as_set(&self) -> &BTreeSet<Capability>

Borrow the underlying sorted set.

Trait Implementations§

Source§

impl Clone for CapabilitySet

Source§

fn clone(&self) -> CapabilitySet

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 Debug for CapabilitySet

Source§

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

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

impl Default for CapabilitySet

Source§

fn default() -> CapabilitySet

Returns the “default value” for a type. Read more
Source§

impl From<BTreeSet<Capability>> for CapabilitySet

Source§

fn from(s: BTreeSet<Capability>) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for CapabilitySet

Source§

fn eq(&self, other: &CapabilitySet) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for CapabilitySet

Source§

impl StructuralPartialEq for CapabilitySet

Auto Trait Implementations§

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more