Struct tor_rtcompat::PreferredRuntime
source · pub struct PreferredRuntime { /* private fields */ }native-tls or rustls) and (crate features async-std or tokio) only.Expand description
The runtime that we prefer to use, out of all the runtimes compiled into the tor-rtcompat crate.
If tokio and async-std are both available, we prefer tokio for its
performance.
If native_tls and rustls are both available, we prefer native_tls since
it has been used in Arti for longer.
Implementations§
source§impl PreferredRuntime
impl PreferredRuntime
sourcepub fn current() -> Result<Self>
pub fn current() -> Result<Self>
Obtain a PreferredRuntime from the currently running asynchronous runtime.
Generally, this is what you want.
This tries to get a handle to a currently running asynchronous runtime, and
wraps it; the returned PreferredRuntime isn’t the same thing as the
asynchronous runtime object itself (e.g. tokio::runtime::Runtime).
Panics
When tor-rtcompat is compiled with the tokio feature enabled
(regardless of whether the async-std feature is also enabled),
panics if called outside of Tokio runtime context.
See tokio::runtime::Handle::current.
Usage notes
Once you have a runtime returned by this function, you should
just create more handles to it via Clone.
Limitations
If the tor-rtcompat crate was compiled with tokio support,
this function will never return a runtime based on async_std.
sourcepub fn create() -> Result<Self>
pub fn create() -> Result<Self>
Create and return a new instance of the default Runtime.
Generally you should call this function at most once, and then use
Clone::clone() to create additional references to that runtime.
Tokio users may want to avoid this function and instead obtain a runtime using
PreferredRuntime::current: this function always builds a runtime,
and if you already have a runtime, that isn’t what you want with Tokio.
If you need more fine-grained control over a runtime, you can create it using an appropriate builder type or function.
Trait Implementations§
source§impl BlockOn for PreferredRuntime
impl BlockOn for PreferredRuntime
source§impl Clone for PreferredRuntime
impl Clone for PreferredRuntime
source§fn clone(&self) -> PreferredRuntime
fn clone(&self) -> PreferredRuntime
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Debug for PreferredRuntime
impl Debug for PreferredRuntime
source§impl SleepProvider for PreferredRuntime
impl SleepProvider for PreferredRuntime
§type SleepFuture = <TokioNativeTlsRuntime as SleepProvider>::SleepFuture
type SleepFuture = <TokioNativeTlsRuntime as SleepProvider>::SleepFuture
SleepProvider::sleep()source§fn sleep(&self, duration: Duration) -> Self::SleepFuture
fn sleep(&self, duration: Duration) -> Self::SleepFuture
duration has
elapsed.source§fn wallclock(&self) -> SystemTime
fn wallclock(&self) -> SystemTime
source§fn block_advance<T: Into<String>>(&self, _reason: T)
fn block_advance<T: Into<String>>(&self, _reason: T)
source§fn release_advance<T: Into<String>>(&self, _reason: T)
fn release_advance<T: Into<String>>(&self, _reason: T)
block_advance no
longer exists, and it’s fine to move time forward if nothing else is blocking advances. Read moresource§fn allow_one_advance(&self, _dur: Duration)
fn allow_one_advance(&self, _dur: Duration)
block_advance API has been used. Read moresource§impl Spawn for PreferredRuntime
impl Spawn for PreferredRuntime
source§impl TcpProvider for PreferredRuntime
impl TcpProvider for PreferredRuntime
§type TcpStream = <TokioNativeTlsRuntime as TcpProvider>::TcpStream
type TcpStream = <TokioNativeTlsRuntime as TcpProvider>::TcpStream
Self::connect().§type TcpListener = <TokioNativeTlsRuntime as TcpProvider>::TcpListener
type TcpListener = <TokioNativeTlsRuntime as TcpProvider>::TcpListener
Self::listen().source§fn connect<'life0, 'life1, 'async_trait>(
&'life0 self,
addr: &'life1 SocketAddr
) -> Pin<Box<dyn Future<Output = Result<Self::TcpStream>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn connect<'life0, 'life1, 'async_trait>(
&'life0 self,
addr: &'life1 SocketAddr
) -> Pin<Box<dyn Future<Output = Result<Self::TcpStream>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
source§fn listen<'life0, 'life1, 'async_trait>(
&'life0 self,
addr: &'life1 SocketAddr
) -> Pin<Box<dyn Future<Output = Result<Self::TcpListener>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn listen<'life0, 'life1, 'async_trait>(
&'life0 self,
addr: &'life1 SocketAddr
) -> Pin<Box<dyn Future<Output = Result<Self::TcpListener>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
source§impl<S> TlsProvider<S> for PreferredRuntimewhere
S: AsyncRead + AsyncWrite + Unpin + Send + 'static,
impl<S> TlsProvider<S> for PreferredRuntimewhere
S: AsyncRead + AsyncWrite + Unpin + Send + 'static,
§type Connector = <TokioNativeTlsRuntime as TlsProvider<S>>::Connector
type Connector = <TokioNativeTlsRuntime as TlsProvider<S>>::Connector
§type TlsStream = <TokioNativeTlsRuntime as TlsProvider<S>>::TlsStream
type TlsStream = <TokioNativeTlsRuntime as TlsProvider<S>>::TlsStream
source§fn tls_connector(&self) -> Self::Connector
fn tls_connector(&self) -> Self::Connector
source§impl UdpProvider for PreferredRuntime
impl UdpProvider for PreferredRuntime
§type UdpSocket = <TokioNativeTlsRuntime as UdpProvider>::UdpSocket
type UdpSocket = <TokioNativeTlsRuntime as UdpProvider>::UdpSocket
Self::bind()Auto Trait Implementations§
impl !RefUnwindSafe for PreferredRuntime
impl Send for PreferredRuntime
impl Sync for PreferredRuntime
impl Unpin for PreferredRuntime
impl !UnwindSafe for PreferredRuntime
Blanket Implementations§
§impl<Sp> SpawnExt for Spwhere
Sp: Spawn + ?Sized,
impl<Sp> SpawnExt for Spwhere
Sp: Spawn + ?Sized,
§fn spawn<Fut>(&self, future: Fut) -> Result<(), SpawnError>where
Fut: Future<Output = ()> + Send + 'static,
fn spawn<Fut>(&self, future: Fut) -> Result<(), SpawnError>where
Fut: Future<Output = ()> + Send + 'static,
alloc only.() to
completion. Read more§fn spawn_with_handle<Fut>(
&self,
future: Fut
) -> Result<RemoteHandle<<Fut as Future>::Output>, SpawnError>where
Fut: Future + Send + 'static,
<Fut as Future>::Output: Send,
fn spawn_with_handle<Fut>(
&self,
future: Fut
) -> Result<RemoteHandle<<Fut as Future>::Output>, SpawnError>where
Fut: Future + Send + 'static,
<Fut as Future>::Output: Send,
channel and std only.