Struct foundry_compilers::ProjectCompileOutput

source ·
pub struct ProjectCompileOutput<C: Compiler = MultiCompiler, T: ArtifactOutput = ConfigurableArtifacts> { /* private fields */ }
Expand description

Contains a mixture of already compiled/cached artifacts and the input set of sources that still need to be compiled.

Implementations§

source§

impl<T: ArtifactOutput, C: Compiler> ProjectCompileOutput<C, T>

source

pub fn slash_paths(&mut self)

Converts all \\ separators in all paths to /

source

pub fn with_slashed_paths(self) -> Self

Convenience function fo Self::slash_paths()

source

pub fn artifact_ids( &self, ) -> impl Iterator<Item = (ArtifactId, &T::Artifact)> + '_

All artifacts together with their contract file name and name <file name>:<name>.

This returns a chained iterator of both cached and recompiled contract artifacts.

Borrowed version of Self::into_artifacts.

source

pub fn into_artifacts(self) -> impl Iterator<Item = (ArtifactId, T::Artifact)>

All artifacts together with their contract file name and name <file name>:<name>

This returns a chained iterator of both cached and recompiled contract artifacts

§Examples
use foundry_compilers::{ArtifactId, ConfigurableContractArtifact, Project};
use std::collections::btree_map::BTreeMap;

let project = Project::builder().build()?;
let contracts: BTreeMap<ArtifactId, ConfigurableContractArtifact> =
    project.compile()?.into_artifacts().collect();
source

pub fn artifacts(&self) -> impl Iterator<Item = (String, &T::Artifact)>

This returns a chained iterator of both cached and recompiled contract artifacts that yields the contract name and the corresponding artifact

§Examples
use foundry_compilers::{ConfigurableContractArtifact, Project};
use std::collections::btree_map::BTreeMap;

let project = Project::builder().build()?;
let artifacts: BTreeMap<String, &ConfigurableContractArtifact> =
    project.compile()?.artifacts().collect();
source

pub fn versioned_artifacts( &self, ) -> impl Iterator<Item = (String, (&T::Artifact, &Version))>

This returns a chained iterator of both cached and recompiled contract artifacts that yields the contract name and the corresponding artifact with its version

§Examples
use foundry_compilers::{ConfigurableContractArtifact, Project};
use semver::Version;
use std::collections::btree_map::BTreeMap;

let project = Project::builder().build()?;
let artifacts: BTreeMap<String, (&ConfigurableContractArtifact, &Version)> =
    project.compile()?.versioned_artifacts().collect();
source

pub fn artifacts_with_files( &self, ) -> impl Iterator<Item = (&PathBuf, &String, &T::Artifact)> + '_

All artifacts together with their contract file and name as tuple (file, contract name, artifact)

This returns a chained iterator of both cached and recompiled contract artifacts

Borrowed version of Self::into_artifacts_with_files.

NOTE the file will be returned as is, see also Self::with_stripped_file_prefixes().

source

pub fn into_artifacts_with_files( self, ) -> impl Iterator<Item = (PathBuf, String, T::Artifact)>

All artifacts together with their contract file and name as tuple (file, contract name, artifact)

This returns a chained iterator of both cached and recompiled contract artifacts

§Examples
use foundry_compilers::{ConfigurableContractArtifact, Project};
use std::collections::btree_map::BTreeMap;

let project = Project::builder().build()?;
let contracts: Vec<(String, String, ConfigurableContractArtifact)> =
    project.compile()?.into_artifacts_with_files().collect();

NOTE the file will be returned as is, see also Self::with_stripped_file_prefixes()

source

pub fn into_artifacts_with_sources( self, ) -> (BTreeMap<ArtifactId, T::Artifact>, VersionedSourceFiles)

All artifacts together with their ID and the sources of the project.

Note: this only returns the SourceFiles for freshly compiled contracts because, if not included in the Artifact itself (see foundry_compilers_artifacts::ConfigurableContractArtifact::source_file()), is only available via the solc CompilerOutput

source

pub fn with_stripped_file_prefixes(self, base: impl AsRef<Path>) -> Self

Strips the given prefix from all artifact file paths to make them relative to the given base argument

§Examples

Make all artifact files relative to the project’s root directory

use foundry_compilers::Project;

let project = Project::builder().build()?;
let output = project.compile()?.with_stripped_file_prefixes(project.root());
source

pub fn output(&self) -> &AggregatedCompilerOutput<C>

Returns a reference to the (merged) solc compiler output.

§Examples
use foundry_compilers::{artifacts::contract::Contract, Project};
use std::collections::btree_map::BTreeMap;

let project = Project::builder().build()?;
let contracts: BTreeMap<String, Contract> =
    project.compile()?.into_output().contracts_into_iter().collect();
source

pub fn output_mut(&mut self) -> &mut AggregatedCompilerOutput<C>

Returns a mutable reference to the (merged) solc compiler output.

source

pub fn into_output(self) -> AggregatedCompilerOutput<C>

Consumes the output and returns the (merged) solc compiler output.

source

pub fn has_compiled_contracts(&self) -> bool

Returns whether this type has a compiler output.

source

pub fn is_unchanged(&self) -> bool

Returns whether this type does not contain compiled contracts.

source

pub fn cached_artifacts(&self) -> &Artifacts<T::Artifact>

Returns the set of Artifacts that were cached and got reused during crate::Project::compile()

source

pub fn compiled_artifacts(&self) -> &Artifacts<T::Artifact>

Returns the set of Artifacts that were compiled with solc in crate::Project::compile()

source

pub fn set_compiled_artifacts( &mut self, new_compiled_artifacts: Artifacts<T::Artifact>, )

Sets the compiled artifacts for this output.

source

pub fn compiled_contracts_by_compiler_version( &self, ) -> BTreeMap<Version, Vec<(String, Contract)>>

Returns a BTreeMap that maps the compiler version used during crate::Project::compile() to a Vector of tuples containing the contract name and the Contract

source

pub fn find_contract<'a>( &self, info: impl Into<ContractInfoRef<'a>>, ) -> Option<&T::Artifact>

Removes the contract with matching path and name using the <path>:<contractname> pattern where path is optional.

If the path segment is None, then the first matching Contract is returned, see Self::remove_first.

§Examples
use foundry_compilers::{artifacts::*, info::ContractInfo, Project};

let project = Project::builder().build()?;
let output = project.compile()?;
let info = ContractInfo::new("src/Greeter.sol:Greeter");
let contract = output.find_contract(&info).unwrap();
source

pub fn find( &self, path: impl AsRef<str>, contract: impl AsRef<str>, ) -> Option<&T::Artifact>

Finds the artifact with matching path and name

§Examples
use foundry_compilers::{artifacts::*, Project};

let project = Project::builder().build()?;
let output = project.compile()?;
let contract = output.find("src/Greeter.sol", "Greeter").unwrap();
source

pub fn find_first(&self, contract_name: impl AsRef<str>) -> Option<&T::Artifact>

Finds the first contract with the given name

source

pub fn remove( &mut self, path: impl AsRef<str>, contract: impl AsRef<str>, ) -> Option<T::Artifact>

Finds the artifact with matching path and name

§Examples
use foundry_compilers::{artifacts::*, Project};

let project = Project::builder().build()?;
let output = project.compile()?;
let contract = output.find("src/Greeter.sol", "Greeter").unwrap();
source

pub fn remove_first( &mut self, contract_name: impl AsRef<str>, ) -> Option<T::Artifact>

Removes the first contract with the given name from the set

§Examples
use foundry_compilers::{artifacts::*, Project};

let project = Project::builder().build()?;
let mut output = project.compile()?;
let contract = output.remove_first("Greeter").unwrap();
source

pub fn remove_contract<'a>( &mut self, info: impl Into<ContractInfoRef<'a>>, ) -> Option<T::Artifact>

Removes the contract with matching path and name using the <path>:<contractname> pattern where path is optional.

If the path segment is None, then the first matching Contract is returned, see Self::remove_first

§Examples
use foundry_compilers::{artifacts::*, info::ContractInfo, Project};

let project = Project::builder().build()?;
let mut output = project.compile()?;
let info = ContractInfo::new("src/Greeter.sol:Greeter");
let contract = output.remove_contract(&info).unwrap();
source

pub fn into_contract_bytecodes( self, ) -> impl Iterator<Item = (ArtifactId, CompactContractBytecode)>

A helper functions that extracts the underlying CompactContractBytecode from the foundry_compilers_artifacts::ConfigurableContractArtifact

§Examples
use foundry_compilers::{
    artifacts::contract::CompactContractBytecode, contracts::ArtifactContracts, ArtifactId,
    Project,
};
use std::collections::btree_map::BTreeMap;

let project = Project::builder().build()?;
let contracts: ArtifactContracts = project.compile()?.into_contract_bytecodes().collect();
source

pub fn builds( &self, ) -> impl Iterator<Item = (&String, &BuildContext<C::Language>)>

source§

impl<C: Compiler, T: ArtifactOutput> ProjectCompileOutput<C, T>

source

pub fn has_compiler_errors(&self) -> bool

Returns whether any errors were emitted by the compiler.

source

pub fn has_compiler_warnings(&self) -> bool

Returns whether any warnings were emitted by the compiler.

source

pub fn succeeded(self) -> Self

Panics if any errors were emitted by the compiler.

source

pub fn assert_success(&self)

Panics if any errors were emitted by the compiler.

Trait Implementations§

source§

impl<C: Clone + Compiler, T: Clone + ArtifactOutput> Clone for ProjectCompileOutput<C, T>
where T::Artifact: Clone, C::Language: Clone,

source§

fn clone(&self) -> ProjectCompileOutput<C, T>

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl<C: Debug + Compiler, T: Debug + ArtifactOutput> Debug for ProjectCompileOutput<C, T>
where T::Artifact: Debug, C::Language: Debug,

source§

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

Formats the value using the given formatter. Read more
source§

impl<C: Default + Compiler, T: Default + ArtifactOutput> Default for ProjectCompileOutput<C, T>

source§

fn default() -> ProjectCompileOutput<C, T>

Returns the “default value” for a type. Read more
source§

impl<C: Compiler, T: ArtifactOutput> Display for ProjectCompileOutput<C, T>

source§

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

Formats the value using the given formatter. Read more
source§

impl<C: PartialEq + Compiler, T: PartialEq + ArtifactOutput> PartialEq for ProjectCompileOutput<C, T>

source§

fn eq(&self, other: &ProjectCompileOutput<C, T>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<C: Compiler, T: ArtifactOutput> StructuralPartialEq for ProjectCompileOutput<C, T>

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> DynClone for T
where T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

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

source§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
source§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to Color::Primary.

§Example
println!("{}", value.primary());
source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to Color::Fixed.

§Example
println!("{}", value.fixed(color));
source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to Color::Rgb.

§Example
println!("{}", value.rgb(r, g, b));
source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to Color::Black.

§Example
println!("{}", value.black());
source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to Color::Red.

§Example
println!("{}", value.red());
source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to Color::Green.

§Example
println!("{}", value.green());
source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to Color::Yellow.

§Example
println!("{}", value.yellow());
source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to Color::Blue.

§Example
println!("{}", value.blue());
source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to Color::Magenta.

§Example
println!("{}", value.magenta());
source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to Color::Cyan.

§Example
println!("{}", value.cyan());
source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to Color::White.

§Example
println!("{}", value.white());
source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightBlack.

§Example
println!("{}", value.bright_black());
source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightRed.

§Example
println!("{}", value.bright_red());
source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightGreen.

§Example
println!("{}", value.bright_green());
source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightYellow.

§Example
println!("{}", value.bright_yellow());
source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightBlue.

§Example
println!("{}", value.bright_blue());
source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightMagenta.

§Example
println!("{}", value.bright_magenta());
source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightCyan.

§Example
println!("{}", value.bright_cyan());
source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to Color::BrightWhite.

§Example
println!("{}", value.bright_white());
source§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
source§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to Color::Primary.

§Example
println!("{}", value.on_primary());
source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to Color::Fixed.

§Example
println!("{}", value.on_fixed(color));
source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to Color::Rgb.

§Example
println!("{}", value.on_rgb(r, g, b));
source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to Color::Black.

§Example
println!("{}", value.on_black());
source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to Color::Red.

§Example
println!("{}", value.on_red());
source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to Color::Green.

§Example
println!("{}", value.on_green());
source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to Color::Yellow.

§Example
println!("{}", value.on_yellow());
source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to Color::Blue.

§Example
println!("{}", value.on_blue());
source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to Color::Magenta.

§Example
println!("{}", value.on_magenta());
source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to Color::Cyan.

§Example
println!("{}", value.on_cyan());
source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to Color::White.

§Example
println!("{}", value.on_white());
source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightBlack.

§Example
println!("{}", value.on_bright_black());
source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightRed.

§Example
println!("{}", value.on_bright_red());
source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightGreen.

§Example
println!("{}", value.on_bright_green());
source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightYellow.

§Example
println!("{}", value.on_bright_yellow());
source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightBlue.

§Example
println!("{}", value.on_bright_blue());
source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightMagenta.

§Example
println!("{}", value.on_bright_magenta());
source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightCyan.

§Example
println!("{}", value.on_bright_cyan());
source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to Color::BrightWhite.

§Example
println!("{}", value.on_bright_white());
source§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling Attribute value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
source§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Bold.

§Example
println!("{}", value.bold());
source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Dim.

§Example
println!("{}", value.dim());
source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Italic.

§Example
println!("{}", value.italic());
source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Underline.

§Example
println!("{}", value.underline());

Returns self with the attr() set to Attribute::Blink.

§Example
println!("{}", value.blink());

Returns self with the attr() set to Attribute::RapidBlink.

§Example
println!("{}", value.rapid_blink());
source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Invert.

§Example
println!("{}", value.invert());
source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Conceal.

§Example
println!("{}", value.conceal());
source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to Attribute::Strike.

§Example
println!("{}", value.strike());
source§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi Quirk value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
source§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::Mask.

§Example
println!("{}", value.mask());
source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::Wrap.

§Example
println!("{}", value.wrap());
source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::Linger.

§Example
println!("{}", value.linger());
source§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to Quirk::Clear.

§Example
println!("{}", value.clear());
source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::Resetting.

§Example
println!("{}", value.resetting());
source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::Bright.

§Example
println!("{}", value.bright());
source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to Quirk::OnBright.

§Example
println!("{}", value.on_bright());
source§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the Condition value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

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

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

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> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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