AddrType

Enum AddrType 

Source
pub enum AddrType {
    Hostname = 0,
    IPv4 = 4,
    IPv6 = 6,
    ErrorTransient = 16,
    ErrorPermanent = 17,
    Unknown = 18,
}
Expand description

Address type identifier for relay addresses.

Indicates the format of an address in the Tor protocol. This is used in NETINFO cells and other places where addresses are exchanged.

§Variants

VariantValueDescription
Hostname0DNS hostname (not typically used)
IPv44IPv4 address (4 bytes)
IPv66IPv6 address (16 bytes)
ErrorTransient16Temporary error retrieving address
ErrorPermanent17Permanent error retrieving address
Unknown-Unrecognized address type

§Example

use stem_rs::client::datatype::AddrType;

let (addr_type, raw_value) = AddrType::get(4);
assert_eq!(addr_type, AddrType::IPv4);
assert_eq!(raw_value, 4);

// Unknown types preserve the raw value
let (addr_type, raw_value) = AddrType::get(99);
assert_eq!(addr_type, AddrType::Unknown);
assert_eq!(raw_value, 99);

Variants§

§

Hostname = 0

DNS hostname.

§

IPv4 = 4

IPv4 address (4 bytes).

§

IPv6 = 6

IPv6 address (16 bytes).

§

ErrorTransient = 16

Temporary error retrieving the address.

§

ErrorPermanent = 17

Permanent error retrieving the address.

§

Unknown = 18

Unrecognized address type.

Implementations§

Source§

impl AddrType

Source

pub fn get(val: u8) -> (AddrType, u8)

Converts a raw byte value to an AddrType and its integer representation.

§Arguments
  • val - The raw address type byte from the protocol
§Returns

A tuple of (AddrType, u8) where the second element is the original byte value. This preserves unknown type values for round-tripping.

§Example
use stem_rs::client::datatype::AddrType;

assert_eq!(AddrType::get(4), (AddrType::IPv4, 4));
assert_eq!(AddrType::get(6), (AddrType::IPv6, 6));
assert_eq!(AddrType::get(99), (AddrType::Unknown, 99));
Source

pub fn value(&self) -> u8

Returns the integer value for this address type.

Returns 255 for Unknown types (the original value is lost).

Trait Implementations§

Source§

impl Clone for AddrType

Source§

fn clone(&self) -> AddrType

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

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

Performs copy-assignment from source. Read more
Source§

impl Debug for AddrType

Source§

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

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

impl Hash for AddrType

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for AddrType

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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 Copy for AddrType

Source§

impl Eq for AddrType

Source§

impl StructuralPartialEq for AddrType

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