Skip to main content

AsyncEzCapSolverClient

Struct AsyncEzCapSolverClient 

Source
pub struct AsyncEzCapSolverClient { /* private fields */ }
Available on crate feature async only.
Expand description

Non-blocking client for asynchronous and synchronous EzCaptchaSolver API operations.

Implementations§

Source§

impl AsyncEzCapSolverClient

Source

pub async fn solve_recaptcha_v2_task_proxyless( &self, task: &RecaptchaV2Task, ) -> Result<Solved<RecaptchaSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_recaptcha_v2_task_proxyless( &self, task: &RecaptchaV2Task, ) -> Result<Solved<RecaptchaSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_recaptcha_v2_task_proxyless_s9( &self, task: &RecaptchaV2Task, ) -> Result<Solved<RecaptchaSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_recaptcha_v2_task_proxyless_s9( &self, task: &RecaptchaV2Task, ) -> Result<Solved<RecaptchaSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_recaptcha_v2_s_task_proxyless( &self, task: &RecaptchaV2Task, ) -> Result<Solved<RecaptchaSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_recaptcha_v2_s_task_proxyless( &self, task: &RecaptchaV2Task, ) -> Result<Solved<RecaptchaSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_recaptcha_v2_enterprise_task_proxyless( &self, task: &RecaptchaV2Task, ) -> Result<Solved<RecaptchaSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_recaptcha_v2_enterprise_task_proxyless( &self, task: &RecaptchaV2Task, ) -> Result<Solved<RecaptchaSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_recaptcha_v2_s_enterprise_task_proxyless( &self, task: &RecaptchaV2Task, ) -> Result<Solved<RecaptchaSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_recaptcha_v2_s_enterprise_task_proxyless( &self, task: &RecaptchaV2Task, ) -> Result<Solved<RecaptchaSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_recaptcha_v2_classification( &self, task: &RecaptchaV2ClassificationTask, ) -> Result<Solved<ReClassificationSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_recaptcha_v2_classification( &self, task: &RecaptchaV2ClassificationTask, ) -> Result<Solved<ReClassificationSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_recaptcha_v3_task_proxyless( &self, task: &RecaptchaV3Task, ) -> Result<Solved<RecaptchaSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_recaptcha_v3_task_proxyless( &self, task: &RecaptchaV3Task, ) -> Result<Solved<RecaptchaSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_recaptcha_v3_task_proxyless_s9( &self, task: &RecaptchaV3Task, ) -> Result<Solved<RecaptchaSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_recaptcha_v3_task_proxyless_s9( &self, task: &RecaptchaV3Task, ) -> Result<Solved<RecaptchaSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_recaptcha_v3_enterprise_task_proxyless( &self, task: &RecaptchaV3Task, ) -> Result<Solved<RecaptchaSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_recaptcha_v3_enterprise_task_proxyless( &self, task: &RecaptchaV3Task, ) -> Result<Solved<RecaptchaSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_recaptcha_v3_enterprise_task_proxyless_s9( &self, task: &RecaptchaV3Task, ) -> Result<Solved<RecaptchaSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_recaptcha_v3_enterprise_task_proxyless_s9( &self, task: &RecaptchaV3Task, ) -> Result<Solved<RecaptchaSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_funcaptcha_task_proxyless( &self, task: &FunCaptchaTask, ) -> Result<Solved<FunCaptchaSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_funcaptcha_task_proxyless( &self, task: &FunCaptchaTask, ) -> Result<Solved<FunCaptchaSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_funcaptcha_classification( &self, task: &FunCaptchaClassificationTask, ) -> Result<Solved<FunCaptchaClassificationSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_funcaptcha_classification( &self, task: &FunCaptchaClassificationTask, ) -> Result<Solved<FunCaptchaClassificationSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_perimeter_x( &self, task: &PerimeterXTask, ) -> Result<Solved<PerimeterXSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_perimeter_x( &self, task: &PerimeterXTask, ) -> Result<Solved<PerimeterXSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_hcaptcha( &self, task: &HcaptchaTask, ) -> Result<Solved<HcaptchaSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_hcaptcha( &self, task: &HcaptchaTask, ) -> Result<Solved<HcaptchaSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_hcaptcha_classification( &self, task: &HcaptchaClassificationTask, ) -> Result<Solved<HcaptchaClassificationSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_hcaptcha_classification( &self, task: &HcaptchaClassificationTask, ) -> Result<Solved<HcaptchaClassificationSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_akamai_web_task_proxyless( &self, task: &AkamaiWebTask, ) -> Result<Solved<AkamaiWebSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_akamai_web_task_proxyless( &self, task: &AkamaiWebTask, ) -> Result<Solved<AkamaiWebSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_akamai_sbsd_task_proxyless( &self, task: &AkamaiSbsdTask, ) -> Result<Solved<AkamaiSbsdSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_akamai_sbsd_task_proxyless( &self, task: &AkamaiSbsdTask, ) -> Result<Solved<AkamaiSbsdSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_tls_task( &self, task: &TlsForwardTask, ) -> Result<Solved<TlsForwardSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_tls_task( &self, task: &TlsForwardTask, ) -> Result<Solved<TlsForwardSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_cloudflare_5s_task( &self, task: &Cloudflare5sTask, ) -> Result<Solved<Cloudflare5sSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_cloudflare_5s_task( &self, task: &Cloudflare5sTask, ) -> Result<Solved<Cloudflare5sSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_cloudflare_turnstile_task( &self, task: &CloudflareTurnstileTask, ) -> Result<Solved<CloudflareTurnstileSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_cloudflare_turnstile_task( &self, task: &CloudflareTurnstileTask, ) -> Result<Solved<CloudflareTurnstileSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_data_dome_task_proxyless( &self, task: &DataDomeTask, ) -> Result<Solved<DataDomeSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_data_dome_task_proxyless( &self, task: &DataDomeTask, ) -> Result<Solved<DataDomeSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_data_dome_tags_task_proxyless( &self, task: &DataDomeTagsTask, ) -> Result<Solved<DataDomeSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_data_dome_tags_task_proxyless( &self, task: &DataDomeTagsTask, ) -> Result<Solved<DataDomeSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source

pub async fn solve_incapsula_task_proxyless( &self, task: &IncapsulaTask, ) -> Result<Solved<IncapsulaSolution>>

Creates the task, polls until it finishes, and returns its decoded solution.

The sync_-prefixed method runs the same type through the synchronous endpoint instead.

Source

pub async fn sync_solve_incapsula_task_proxyless( &self, task: &IncapsulaTask, ) -> Result<Solved<IncapsulaSolution>>

Runs the task through the synchronous endpoint and returns its decoded solution.

Solved::task_id carries the identifier this endpoint assigns and returns alongside the result.

Whether a given type is accepted on this endpoint is the service’s decision; a type it does not serve is rejected with ERROR_TASK_TYPE_NOT_ALLOWED before anything is billed.

Source§

impl AsyncEzCapSolverClient

Source

pub fn new() -> Result<Self>

Creates a client with default configuration.

The client key is loaded from EZCAPSOLVER_API_KEY.

Source

pub fn with_config(config: ClientConfig) -> Result<Self>

Creates a client with the supplied configuration.

If the configuration does not contain an explicit client key, EZCAPSOLVER_API_KEY is loaded from the environment.

Source

pub fn with_client_key(client_key: impl Into<String>) -> Result<Self>

Creates a client with an explicit client key and default configuration.

Source

pub fn with_http_client(config: ClientConfig, http: Client) -> Result<Self>

Creates a client that sends through a caller-supplied HTTP client.

Use it to share a connection pool, or to install a middleware stack or a custom TLS setup. ClientConfig::proxy and ClientConfig::user_agent are not applied to it — the supplied client brings its own transport and headers. Per-request timeouts still are.

Source

pub const fn config(&self) -> &ClientConfig

Returns the active client configuration.

Source

pub async fn create_task<N, T>( &self, task_type: N, task: &T, ) -> Result<CreateTaskResponse>
where N: TaskTypeName, T: Serialize + ?Sized,

Creates an asynchronous API task without waiting for completion.

The supplied task type is injected into the serialized parameter object.

Most callers should use Self::solve to create the task and wait for its result in one call.

Source

pub async fn get_task_result(&self, task_id: &str) -> Result<TaskResult>

Queries the current result of an asynchronous API task.

This is called once per polling attempt, so it does not log on its own; the caller records the attempt and TRACE records the exchange.

Source

pub async fn wait_for_result(&self, task_id: &str) -> Result<TaskResult>

Waits for an existing asynchronous task using client polling settings.

Source

pub async fn wait_for_result_with( &self, task_id: &str, polling: PollingConfig, ) -> Result<TaskResult>

Waits for an existing asynchronous task using per-call polling settings.

Source

pub async fn solve<N, T>( &self, task_type: N, task: &T, ) -> Result<Solved<Solution>>
where N: TaskTypeName, T: Serialize + ?Sized,

Creates an asynchronous task and waits for its terminal result.

The supplied task type is injected into the serialized parameter object.

This is the recommended high-level method for asynchronous tasks.

Source

pub async fn solve_with<N, T>( &self, task_type: N, task: &T, polling: PollingConfig, ) -> Result<Solved<Solution>>
where N: TaskTypeName, T: Serialize + ?Sized,

Creates an asynchronous task and uses per-call polling settings.

Source

pub async fn sync_solve<N, T>( &self, task_type: N, task: &T, ) -> Result<Solved<Solution>>
where N: TaskTypeName, T: Serialize + ?Sized,

Runs a synchronous task and returns its raw solution without polling.

Accepts a known task type or a custom type name, with parameters that serialize to a JSON object. Uses ClientConfig::sync_timeout.

Like Self::solve, returns Solved<Solution>, preserving the raw solution, including a missing field or JSON null. Both Solved::task_id and Solved::request_id come from the synchronous response.

Source

pub async fn create_sync_task<N, T>( &self, task_type: N, task: &T, ) -> Result<TaskResult>
where N: TaskTypeName, T: Serialize + ?Sized,

Creates a synchronous API task and returns its result.

The supplied task type is injected into the serialized parameter object. Use Self::sync_solve to return the same aggregate as Self::solve.

Source

pub async fn balance(&self) -> Result<f64>

Queries the current account balance.

Trait Implementations§

Source§

impl Clone for AsyncEzCapSolverClient

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for AsyncEzCapSolverClient

Source§

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

Formats the value using the given formatter. Read more

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

Source§

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

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

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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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 = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

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