Struct RelayDetails

Source
pub struct RelayDetails<'a>(pub(crate) &'a Relay<'a>);
Expand description

A view for lower-level details about a Relay.

Most callers should avoid using this structure; they should instead call higher-level functions like those in the tor-relay-selection crate.

Tuple Fields§

§0: &'a Relay<'a>

Implementations§

Source§

impl<'a> RelayDetails<'a>

Source

pub fn supports_exit_port_ipv4(&self, port: u16) -> bool

Return true if this relay allows exiting to port on IPv4.

Source

pub fn supports_exit_port_ipv6(&self, port: u16) -> bool

Return true if this relay allows exiting to port on IPv6.

Source

pub fn is_dir_cache(&self) -> bool

Return true if this relay is suitable for use as a directory cache.

Source

pub fn is_flagged_fast(&self) -> bool

Return true if this relay has the “Fast” flag.

Most relays have this flag. It indicates that the relay is suitable for circuits that need more than a minimal amount of bandwidth.

Source

pub fn is_flagged_stable(&self) -> bool

Return true if this relay has the “Stable” flag.

Most relays have this flag. It indicates that the relay is suitable for long-lived circuits.

Source

pub fn is_hs_intro_point(&self) -> bool

Return true if this relay is a potential HS introduction point

Source

pub fn is_hs_rend_point(&self) -> bool

Return true if this relay is a potential HS rendezvous point

Source

pub fn is_suitable_as_guard(&self) -> bool

Return true if this relay is suitable for use as a newly sampled guard, or for continuing to use as a guard.

Source

pub fn in_same_subnet( &self, other: &Relay<'_>, subnet_config: &SubnetConfig, ) -> bool

Return true if both relays are in the same subnet, as configured by subnet_config.

Two relays are considered to be in the same subnet if they have IPv4 addresses with the same subnets_family_v4-bit prefix, or if they have IPv6 addresses with the same subnets_family_v6-bit prefix.

Source

pub fn in_same_family( &self, other: &Relay<'_>, family_rules: FamilyRules, ) -> bool

Return true if both relays are in the same family.

(Every relay is considered to be in the same family as itself.)

Source

pub fn policies_allow_some_port(&self) -> bool

Return true if there are any ports for which this Relay can be used for exit traffic.

(Returns false if this relay doesn’t allow exit traffic, or if it has been flagged as a bad exit.)

Source

pub fn ipv4_policy(&self) -> Arc<PortPolicy>

Return the IPv4 exit policy for this relay. If the relay has been marked BadExit, return an empty policy

Source

pub fn ipv6_policy(&self) -> Arc<PortPolicy>

Return the IPv6 exit policy for this relay. If the relay has been marked BadExit, return an empty policy

Source

pub fn ipv4_declared_policy(&self) -> &Arc<PortPolicy>

Return the IPv4 exit policy declared by this relay.

In contrast to RelayDetails::ipv4_policy, this does not verify if the relay is marked BadExit.

Source

pub fn ipv6_declared_policy(&self) -> &Arc<PortPolicy>

Return the IPv6 exit policy declared by this relay.

In contrast to RelayDetails::ipv6_policy, this does not verify if the relay is marked BadExit.

Trait Implementations§

Source§

impl<'a> Clone for RelayDetails<'a>

Source§

fn clone(&self) -> RelayDetails<'a>

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for RelayDetails<'a>

§

impl<'a> RefUnwindSafe for RelayDetails<'a>

§

impl<'a> Send for RelayDetails<'a>

§

impl<'a> Sync for RelayDetails<'a>

§

impl<'a> Unpin for RelayDetails<'a>

§

impl<'a> UnwindSafe for RelayDetails<'a>

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
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSend for T
where T: Any + Send,

§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Sync + Send>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

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

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> ErasedDestructor for T
where T: 'static,