Struct arti_client::IsolationToken
source · [−]pub struct IsolationToken(_);
Expand description
A token used to isolate unrelated streams on different circuits.
When two streams are associated with different isolation tokens, they can never share the same circuit.
Tokens created with IsolationToken::new
are all different from
one another, and different from tokens created with
IsolationToken::no_isolation
. However, tokens created with
IsolationToken::no_isolation
are all equal to one another.
Examples
Creating distinct isolation tokens:
let token_1 = IsolationToken::new();
let token_2 = IsolationToken::new();
assert_ne!(token_1, token_2);
// Demonstrating the behaviour of no_isolation() tokens:
assert_ne!(token_1, IsolationToken::no_isolation());
assert_eq!(IsolationToken::no_isolation(), IsolationToken::no_isolation());
Using an isolation token to route streams differently over the Tor network:
use arti_client::StreamPrefs;
let token_1 = IsolationToken::new();
let token_2 = IsolationToken::new();
let mut prefs_1 = StreamPrefs::new();
prefs_1.set_isolation_group(token_1);
let mut prefs_2 = StreamPrefs::new();
prefs_2.set_isolation_group(token_2);
// These two connections will come from different source IP addresses.
tor_client.connect(("example.com", 80), Some(prefs_1)).await?;
tor_client.connect(("example.com", 80), Some(prefs_2)).await?;
Implementations
sourceimpl IsolationToken
impl IsolationToken
sourcepub fn new() -> IsolationToken
pub fn new() -> IsolationToken
Create a new IsolationToken, unequal to any other token this function has created.
Panics
Panics if we have already allocated 2^64 isolation tokens: in that case, we have exhausted the space of possible tokens, and it is no longer possible to ensure isolation.
sourcepub fn no_isolation() -> IsolationToken
pub fn no_isolation() -> IsolationToken
Create a new IsolationToken equal to every other token created
with this function, but different from all tokens created with
new
.
This can be used when no isolation is wanted for some streams.
Trait Implementations
sourceimpl Clone for IsolationToken
impl Clone for IsolationToken
sourcepub fn clone(&self) -> IsolationToken
pub fn clone(&self) -> IsolationToken
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for IsolationToken
impl Debug for IsolationToken
sourceimpl Ord for IsolationToken
impl Ord for IsolationToken
sourceimpl PartialEq<IsolationToken> for IsolationToken
impl PartialEq<IsolationToken> for IsolationToken
sourcepub fn eq(&self, other: &IsolationToken) -> bool
pub fn eq(&self, other: &IsolationToken) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcepub fn ne(&self, other: &IsolationToken) -> bool
pub fn ne(&self, other: &IsolationToken) -> bool
This method tests for !=
.
sourceimpl PartialOrd<IsolationToken> for IsolationToken
impl PartialOrd<IsolationToken> for IsolationToken
sourcepub fn partial_cmp(&self, other: &IsolationToken) -> Option<Ordering>
pub fn partial_cmp(&self, other: &IsolationToken) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
impl Copy for IsolationToken
impl Eq for IsolationToken
impl StructuralEq for IsolationToken
impl StructuralPartialEq for IsolationToken
Auto Trait Implementations
impl RefUnwindSafe for IsolationToken
impl Send for IsolationToken
impl Sync for IsolationToken
impl Unpin for IsolationToken
impl UnwindSafe for IsolationToken
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
pub fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more