NetworkProveBuilder

Struct NetworkProveBuilder 

Source
pub struct NetworkProveBuilder<'a> { /* private fields */ }
Expand description

A builder for creating a proof request to the network.

Implementations§

Source§

impl NetworkProveBuilder<'_>

Source

pub fn core(self) -> Self

Set the proof kind to SP1ProofMode::Core mode.

§Details

This is the default mode for the prover. The proofs grow linearly in size with the number of cycles.

§Example
use sp1_sdk::{Prover, ProverClient, SP1Stdin};

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let builder = client.prove(&pk, &stdin).core().run();
Source

pub fn compressed(self) -> Self

Set the proof kind to SP1ProofMode::Compressed mode.

§Details

This mode produces a proof that is of constant size, regardless of the number of cycles. It takes longer to prove than SP1ProofMode::Core due to the need to recursively aggregate proofs into a single proof.

§Example
use sp1_sdk::{Prover, ProverClient, SP1Stdin};

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let builder = client.prove(&pk, &stdin).compressed().run();
Source

pub fn plonk(self) -> Self

Set the proof mode to SP1ProofMode::Plonk mode.

§Details

This mode produces a const size PLONK proof that can be verified on chain for roughly ~300k gas. This mode is useful for producing a maximally small proof that can be verified on chain. For more efficient SNARK wrapping, you can use the SP1ProofMode::Groth16 mode but this mode is more .

§Example
use sp1_sdk::{Prover, ProverClient, SP1Stdin};

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let builder = client.prove(&pk, &stdin).plonk().run();
Source

pub fn groth16(self) -> Self

Set the proof mode to SP1ProofMode::Groth16 mode.

§Details

This mode produces a Groth16 proof that can be verified on chain for roughly ~100k gas. This mode is useful for producing a proof that can be verified on chain with minimal gas.

§Example
use sp1_sdk::{Prover, ProverClient, SP1Stdin};

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let builder = client.prove(&pk, &stdin).groth16().run();
Source

pub fn mode(self, mode: SP1ProofMode) -> Self

Set the proof mode to the given SP1ProofMode.

§Details

This method is useful for setting the proof mode to a custom mode.

§Example
use sp1_sdk::{Prover, ProverClient, SP1ProofMode, SP1Stdin};

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let builder = client.prove(&pk, &stdin).mode(SP1ProofMode::Groth16).run();
Source

pub fn timeout(self, timeout: Duration) -> Self

Set the timeout for the proof’s generation.

§Details

This method sets the timeout for the proof’s generation. If the proof is not generated within the timeout, the NetworkProveBuilder::run will return an error.

§Example
use sp1_sdk::{Prover, ProverClient, SP1Stdin};
use std::time::Duration;

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let builder = client.prove(&pk, &stdin).timeout(Duration::from_secs(60)).run();
Source

pub fn skip_simulation(self, skip_simulation: bool) -> Self

Set whether to skip the local execution simulation step.

§Details

This method sets whether to skip the local execution simulation step. If the simulation step is skipped, the request will sent to the network without verifying that the execution succeeds locally (without generating a proof). This feature is recommended for users who want to optimize the latency of the proof generation on the network.

§Example
use sp1_sdk::{Prover, ProverClient, SP1Stdin};

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let builder = client.prove(&pk, &stdin).skip_simulation(true).run();
Source

pub fn strategy(self, strategy: FulfillmentStrategy) -> Self

Sets the fulfillment strategy for the client.

§Details

The strategy determines how the client will fulfill requests.

§Example
use sp1_sdk::{network::FulfillmentStrategy, Prover, ProverClient, SP1Stdin};

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let proof = client.prove(&pk, &stdin).strategy(FulfillmentStrategy::Hosted).run().unwrap();
Source

pub fn cycle_limit(self, cycle_limit: u64) -> Self

Sets the cycle limit for the proof request.

§Details

The cycle limit determines the maximum number of cycles that the program should take to execute. By default, the cycle limit is determined by simulating the program locally. However, you can manually set it if you know the exact cycle count needed and want to skip the simulation step locally.

The cycle limit ensures that a prover on the network will stop generating a proof once the cycle limit is reached, which prevents denial of service attacks.

§Example
use sp1_sdk::{Prover, ProverClient, SP1Stdin};

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let proof = client
    .prove(&pk, &stdin)
    .cycle_limit(1_000_000) // Set 1M cycle limit.
    .skip_simulation(true) // Skip simulation since the limit is set manually.
    .run()
    .unwrap();
Source

pub fn gas_limit(self, gas_limit: u64) -> Self

Sets the gas limit for the proof request.

§Details

The gas limit determines the maximum amount of gas that the program should consume. By default, the gas limit is determined by simulating the program locally. However, you can manually set it if you know the exact gas count needed and want to skip the simulation step locally.

The gas limit ensures that a prover on the network will stop generating a proof once the gas limit is reached, which prevents denial of service attacks.

§Example
use sp1_sdk::{Prover, ProverClient, SP1Stdin};

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let proof = client
    .prove(&pk, &stdin)
    .gas_limit(1_000_000) // Set 1M gas limit.
    .skip_simulation(true) // Skip simulation since the limit is set manually.
    .run()
    .unwrap();
Source

pub fn min_auction_period(self, min_auction_period: u64) -> Self

Set the minimum auction period for the proof request in seconds.

§Details

The minimum auction period determines how long to wait before settling the auction for the proof request. The auction only settles after both the minimum time has passed and at least one bid is received. If a value is not specified, the default is 1 second.

Only relevant if the strategy is set to FulfillmentStrategy::Auction.

§Example
use sp1_sdk::{Prover, ProverClient, SP1Stdin};
use std::time::Duration;

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let builder = client.prove(&pk, &stdin).min_auction_period(60).run();
Source

pub fn whitelist(self, whitelist: Option<Vec<Address>>) -> Self

Set the whitelist for the proof request.

§Details

The whitelist determines which provers are allowed to bid on the proof request.

Only relevant if the strategy is set to FulfillmentStrategy::Auction.

If whitelist is None when requesting a proof, a set of recently reliable provers will be used.

§Example
use alloy_primitives::Address;
use sp1_sdk::{Prover, ProverClient, SP1Stdin};
use std::str::FromStr;

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let whitelist = vec![Address::from_str("0x123").unwrap(), Address::from_str("0x456").unwrap()];
let builder = client.prove(&pk, &stdin).whitelist(Some(whitelist)).run();
Source

pub fn auctioneer(self, auctioneer: Address) -> Self

Set the auctioneer for the proof request.

§Details

Only the specified auctioneer will be able to manage the auction for this request.

Only relevant if the strategy is set to FulfillmentStrategy::Auction.

§Example
use alloy_primitives::Address;
use sp1_sdk::{Prover, ProverClient, SP1Stdin};
use std::str::FromStr;

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let auctioneer = Address::from_str("0x0000000000000000000000000000000000000000").unwrap();
let builder = client.prove(&pk, &stdin).auctioneer(auctioneer).run();
Source

pub fn executor(self, executor: Address) -> Self

Set the executor for the proof request.

§Details

Only the specified executor will be able to fulfill this request. This is useful for whitelisting specific provers for private or prioritized jobs.

§Example
use alloy_primitives::Address;
use sp1_sdk::{Prover, ProverClient, SP1Stdin};
use std::str::FromStr;

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let executor = Address::from_str("0x0000000000000000000000000000000000000000").unwrap();
let builder = client.prove(&pk, &stdin).executor(executor).run();
Source

pub fn verifier(self, verifier: Address) -> Self

Set the verifier for the proof request.

§Details

Only the specified verifier will be able to verify the proof. Only relevant if the mode is not SP1ProofMode::Compressed, as this mode will be verified within the VApp.

§Example
use alloy_primitives::Address;
use sp1_sdk::{Prover, ProverClient, SP1Stdin};
use std::str::FromStr;

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let verifier = Address::from_str("0x0000000000000000000000000000000000000000").unwrap();
let builder = client.prove(&pk, &stdin).verifier(verifier).run();
Source

pub fn treasury(self, treasury: Address) -> Self

Set the treasury for the proof request.

§Details

The treasury is the address that will receive the protocol fee portion of the proof request reward when it is fulfilled.

§Example
use alloy_primitives::Address;
use sp1_sdk::{Prover, ProverClient, SP1Stdin};
use std::str::FromStr;

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let treasury = Address::from_str("0x0000000000000000000000000000000000000000").unwrap();
let builder = client.prove(&pk, &stdin).treasury(treasury).run();
Source

pub fn max_price_per_pgu(self, max_price_per_pgu: u64) -> Self

Sets the max price per PGU for the proof request.

§Details

The max price per PGU (prover gas unit) lets you specify the maximum amount of PROVE you are willing to pay per PGU, protecting you from unexpected price escalation. If a value is not specified, a default value will be used.

Only relevant if the strategy is set to FulfillmentStrategy::Auction.

§Example
use sp1_sdk::{Prover, ProverClient, SP1Stdin};

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let proof = client
    .prove(&pk, &stdin)
    .max_price_per_pgu(1_000_000_000_000_000_000u64) // Set 1 PROVE (18 decimals).
    .run()
    .unwrap();
Source

pub fn auction_timeout(self, auction_timeout: Duration) -> Self

Sets the auction timeout for the proof request.

§Details

The auction timeout determines how long to wait for a prover to bid on the proof request. If no provers bid on the request within this timeout, the proof request will be canceled. If a value is not specified, the default is 30 seconds.

Only relevant if the strategy is set to FulfillmentStrategy::Auction.

§Example
use sp1_sdk::{Prover, ProverClient, SP1Stdin};
use std::time::Duration;

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let proof = client
    .prove(&pk, &stdin)
    .auction_timeout(Duration::from_secs(60)) // Wait 60 seconds for a prover to pick up the request.
    .run()
    .unwrap();
Source

pub fn request(self) -> Result<B256>

Request a proof from the prover network.

§Details

This method will request a proof from the prover network. If the prover fails to request a proof, the method will return an error. It will not wait for the proof to be generated.

§Example
use sp1_sdk::{Prover, ProverClient, SP1Stdin};

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let request_id = client.prove(&pk, &stdin).request().unwrap();
Source

pub async fn request_async(self) -> Result<B256>

Request a proof from the prover network asynchronously.

§Details

This method will request a proof from the prover network asynchronously. If the prover fails to request a proof, the method will return an error. It will not wait for the proof to be generated.

§Example
use sp1_sdk::{Prover, ProverClient, SP1Stdin};

tokio_test::block_on(async {
    let elf = &[1, 2, 3];
    let stdin = SP1Stdin::new();

    let client = ProverClient::builder().network().build();
    let (pk, vk) = client.setup(elf);
    let request_id = client.prove(&pk, &stdin).request_async().await.unwrap();
})
Source

pub fn run(self) -> Result<SP1ProofWithPublicValues>

Run the prover with the built arguments.

§Details

This method will run the prover with the built arguments. If the prover fails to run, the method will return an error.

§Example
use sp1_sdk::{Prover, ProverClient, SP1Stdin};

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let proof = client.prove(&pk, &stdin).run().unwrap();
Source

pub async fn run_async(self) -> Result<SP1ProofWithPublicValues>

Run the prover with the built arguments asynchronously.

§Details

This method will run the prover with the built arguments asynchronously.

§Example
use sp1_sdk::{Prover, ProverClient, SP1Stdin};

let elf = &[1, 2, 3];
let stdin = SP1Stdin::new();

let client = ProverClient::builder().network().build();
let (pk, vk) = client.setup(elf);
let proof = client.prove(&pk, &stdin).run_async();

Trait Implementations§

Source§

impl<'a> IntoFuture for NetworkProveBuilder<'a>

Source§

type Output = Result<SP1ProofWithPublicValues, Error>

The output that the future will produce on completion.
Source§

type IntoFuture = Pin<Box<dyn Future<Output = <NetworkProveBuilder<'a> as IntoFuture>::Output> + Send + 'a>>

Which kind of future are we turning this into?
Source§

fn into_future(self) -> Self::IntoFuture

Creates a future from a value. 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> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<F, EF, E> ExtensionOperand<F, EF> for E
where F: Field, EF: ExtensionField<F>, E: Any,

Source§

fn to_operand(self) -> ExtOperand<F, EF>

Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: 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: 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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. 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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> JsonSchemaMaybe for T