Trait arti_client::IntoTorAddr

source ·
pub trait IntoTorAddr {
    // Required method
    fn into_tor_addr(self) -> Result<TorAddr, TorAddrError>;
Expand description

An object that can be converted to a TorAddr with a minimum of risk.

Typically, this trait will be implemented for a hostname or service name.

Don’t implement this trait for IP addresses and similar types; instead, implement DangerouslyIntoTorAddr for those. (The trouble with accepting IP addresses is that, in order to get an IP address, most programs will do a local hostname lookup, which will leak the target address to the DNS resolver. The DangerouslyIntoTorAddr trait provides a contract for careful programs to say, “I have gotten this IP address from somewhere safe.” This trait is for name-based addressing and similar, which usually gets its addresses from a safer source.)

See also: the TorAddr documentation.

§Design note

We use a separate trait here, instead of using Into<TorAddr> or TryInto<TorAddr>, because IntoTorAddr implies additional guarantees relating to privacy risk. The separate trait alerts users that something tricky is going on here, and encourages them to think twice before implementing IntoTorAddr for their own types.

Required Methods§


fn into_tor_addr(self) -> Result<TorAddr, TorAddrError>

Try to make a TorAddr to represent connecting to this address.

Implementations on Foreign Types§


impl IntoTorAddr for &str


impl IntoTorAddr for (&str, u16)


impl IntoTorAddr for (String, u16)


impl IntoTorAddr for String


impl<A: IntoTorAddr + Clone> IntoTorAddr for &A