Struct foundry_compilers::Project

source ·
pub struct Project<C: Compiler = MultiCompiler, T: ArtifactOutput = ConfigurableArtifacts> {
Show 14 fields pub compiler: C, pub locked_versions: HashMap<C::Language, Version>, pub paths: ProjectPathsConfig<C::Language>, pub settings: C::Settings, pub cached: bool, pub build_info: bool, pub no_artifacts: bool, pub artifacts: T, pub ignored_error_codes: Vec<u64>, pub ignored_file_paths: Vec<PathBuf>, pub compiler_severity_filter: Severity, pub offline: bool, pub slash_paths: bool, pub sparse_output: Option<Box<dyn FileFilter>>, /* private fields */
}
Expand description

Represents a project workspace and handles solc compiling of all contracts in that workspace.

Fields§

§compiler: C§locked_versions: HashMap<C::Language, Version>

Compiler versions locked for specific languages.

§paths: ProjectPathsConfig<C::Language>

The layout of the project

§settings: C::Settings

The compiler settings

§cached: bool

Whether caching is enabled

§build_info: bool

Whether to output build information with each solc call.

§no_artifacts: bool

Whether writing artifacts to disk is enabled

§artifacts: T

Handles all artifacts related tasks, reading and writing from the artifact dir.

§ignored_error_codes: Vec<u64>

Errors/Warnings which match these error codes are not going to be logged

§ignored_file_paths: Vec<PathBuf>

Errors/Warnings which match these file paths are not going to be logged

§compiler_severity_filter: Severity

The minimum severity level that is treated as a compiler error

§offline: bool

Offline mode, if set, network access (download solc) is disallowed

§slash_paths: bool

Windows only config value to ensure the all paths use / instead of \\, same as solc

This is a noop on other platforms

§sparse_output: Option<Box<dyn FileFilter>>

Optional sparse output filter used to optimize compilation.

Implementations§

source§

impl Project

source

pub fn builder() -> ProjectBuilder

Convenience function to call ProjectBuilder::default().

§Examples

Configure with ConfigurableArtifacts artifacts output:

use foundry_compilers::Project;

let config = Project::builder().build()?;

To configure any a project with any ArtifactOutput use either:

use foundry_compilers::Project;

let config = Project::builder().build()?;

or use the builder directly:

use foundry_compilers::{ConfigurableArtifacts, ProjectBuilder};

let config = ProjectBuilder::<ConfigurableArtifacts>::default().build()?;
source§

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

source

pub fn artifacts_handler(&self) -> &T

Returns the handler that takes care of processing all artifacts

source§

impl<C: Compiler, T: ArtifactOutput> Project<C, T>
where C::Settings: Into<Settings>,

source

pub fn standard_json_input( &self, target: impl AsRef<Path>, ) -> Result<StandardJsonCompilerInput>

Returns standard-json-input to compile the target contract

source§

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

source

pub fn artifacts_path(&self) -> &PathBuf

Returns the path to the artifacts directory

source

pub fn sources_path(&self) -> &PathBuf

Returns the path to the sources directory

source

pub fn cache_path(&self) -> &PathBuf

Returns the path to the cache file

source

pub fn build_info_path(&self) -> &PathBuf

Returns the path to the build-info directory nested in the artifacts dir

source

pub fn root(&self) -> &PathBuf

Returns the root directory of the project

source

pub fn read_cache_file(&self) -> Result<CompilerCache<C::Settings>>

Convenience function to read the cache file. See also CompilerCache::read_joined()

source

pub fn set_solc_jobs(&mut self, jobs: usize)

Sets the maximum number of parallel solc processes to run simultaneously.

§Panics

if jobs == 0

source

pub fn sources(&self) -> Result<Sources>

Returns all sources found under the project’s configured sources path

source

pub fn rerun_if_sources_changed(&self)

Emit the cargo rerun-if-changed instruction.

This tells Cargo to re-run the build script if a file inside the project’s sources directory has changed.

Use this if you compile a project in a build.rs file.

§Examples
use foundry_compilers::{Project, ProjectPathsConfig};

// Configure the project with all its paths, solc, cache etc.
// where the root dir is the current Rust project.
let paths = ProjectPathsConfig::hardhat(env!("CARGO_MANIFEST_DIR"))?;
let project = Project::builder().paths(paths).build()?;
let output = project.compile()?;

// Tell Cargo to rerun this build script that if a source file changes.
project.rerun_if_sources_changed();
source

pub fn compile(&self) -> Result<ProjectCompileOutput<C, T>>

source

pub fn compile_file( &self, file: impl Into<PathBuf>, ) -> Result<ProjectCompileOutput<C, T>>

Convenience function to compile a single solidity file with the project’s settings.

§Examples
use foundry_compilers::Project;

let project = Project::builder().build()?;
let output = project.compile_file("example/Greeter.sol")?;
source

pub fn compile_files<P, I>( &self, files: I, ) -> Result<ProjectCompileOutput<C, T>>
where I: IntoIterator<Item = P>, P: Into<PathBuf>,

Convenience function to compile a series of solidity files with the project’s settings. Same as Self::compile() but with the given files as input.

§Examples
use foundry_compilers::Project;

let project = Project::builder().build()?;
let output = project.compile_files(["examples/Foo.sol", "examples/Bar.sol"])?;
source

pub fn cleanup(&self) -> Result<(), SolcIoError>

Removes the project’s artifacts and cache file

If the cache file was the only file in the folder, this also removes the empty folder.

§Examples
use foundry_compilers::Project;

let project = Project::builder().build()?;
let _ = project.compile()?;
assert!(project.artifacts_path().exists());
assert!(project.cache_path().exists());

project.cleanup();
assert!(!project.artifacts_path().exists());
assert!(!project.cache_path().exists());
source

pub fn find_contract_path(&self, target_name: &str) -> Result<PathBuf>
where T: Clone, C: Clone,

Finds the path of the contract with the given name. Throws error if multiple or no contracts with the same name are found.

Trait Implementations§

source§

impl<T: ArtifactOutput, C: Compiler> ArtifactOutput for Project<C, T>

§

type Artifact = <T as ArtifactOutput>::Artifact

Represents the artifact that will be stored for a Contract
source§

fn on_output<CP>( &self, contracts: &VersionedContracts, sources: &VersionedSourceFiles, layout: &ProjectPathsConfig<CP>, ctx: OutputContext<'_>, ) -> Result<Artifacts<Self::Artifact>>

Handle the aggregated set of compiled contracts from the solc crate::CompilerOutput. Read more
source§

fn handle_artifacts( &self, contracts: &VersionedContracts, artifacts: &Artifacts<Self::Artifact>, ) -> Result<()>

Invoked after artifacts has been written to disk for additional processing.
source§

fn output_file_name(name: impl AsRef<str>) -> PathBuf

Returns the file name for the contract’s artifact Greeter.json
source§

fn output_file_name_versioned( name: impl AsRef<str>, version: &Version, ) -> PathBuf

Returns the file name for the contract’s artifact and the given version Greeter.0.8.11.json
source§

fn output_file( contract_file: impl AsRef<Path>, name: impl AsRef<str>, ) -> PathBuf

Returns the path to the contract’s artifact location based on the contract’s file and name Read more
source§

fn output_file_versioned( contract_file: impl AsRef<Path>, name: impl AsRef<str>, version: &Version, ) -> PathBuf

Returns the path to the contract’s artifact location based on the contract’s file, name and version Read more
source§

fn contract_name(file: impl AsRef<Path>) -> Option<String>

The inverse of contract_file_name Read more
source§

fn output_exists( contract_file: impl AsRef<Path>, name: impl AsRef<str>, root: impl AsRef<Path>, ) -> bool

Whether the corresponding artifact of the given contract file and name exists
source§

fn read_cached_artifact(path: impl AsRef<Path>) -> Result<Self::Artifact>

Read the artifact that’s stored at the given path Read more
source§

fn read_cached_artifacts<P, I>( files: I, ) -> Result<BTreeMap<PathBuf, Self::Artifact>>
where I: IntoIterator<Item = P>, P: Into<PathBuf>,

Read the cached artifacts that are located the paths the iterator yields Read more
source§

fn contract_to_artifact( &self, file: &Path, name: &str, contract: Contract, source_file: Option<&SourceFile>, ) -> Self::Artifact

Convert a contract to the artifact type Read more
source§

fn output_to_artifacts<CP>( &self, contracts: &VersionedContracts, sources: &VersionedSourceFiles, ctx: OutputContext<'_>, layout: &ProjectPathsConfig<CP>, ) -> Artifacts<Self::Artifact>

Convert the compiler output into a set of artifacts Read more
source§

fn standalone_source_file_to_artifact( &self, path: &Path, file: &VersionedSourceFile, ) -> Option<Self::Artifact>

This converts a SourceFile that doesn’t contain any contract definitions (interfaces, contracts, libraries) to an artifact. Read more
source§

fn is_dirty(&self, artifact_file: &ArtifactFile<Self::Artifact>) -> Result<bool>

Handler allowing artifacts handler to enforce artifact recompilation.
source§

fn handle_cached_artifacts( &self, artifacts: &Artifacts<Self::Artifact>, ) -> Result<()>

Invoked with all artifacts that were not recompiled.
source§

fn conflict_free_output_file( already_taken: &HashSet<String>, conflict: PathBuf, contract_file: impl AsRef<Path>, artifacts_folder: impl AsRef<Path>, ) -> PathBuf

Returns the appropriate file name for the conflicting file. Read more
source§

fn get_artifact_path( ctx: &OutputContext<'_>, already_taken: &HashSet<String>, file: &Path, name: &str, artifacts_folder: &Path, version: &Version, versioned: bool, ) -> PathBuf

Generates a path for an artifact based on already taken paths by either cached or compiled artifacts.
source§

impl<T: ArtifactOutput + Default> AsRef<Project<MultiCompiler, T>> for TempProject<MultiCompiler, T>

Available on crate feature project-util only.
source§

fn as_ref(&self) -> &Project<MultiCompiler, T>

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<C: Clone + Compiler, T: Clone + ArtifactOutput> Clone for Project<C, T>
where C::Language: Clone, C::Settings: Clone,

source§

fn clone(&self) -> Project<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, T> Debug for Project<C, T>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<C, T> Freeze for Project<C, T>
where C: Freeze, <C as Compiler>::Settings: Freeze, T: Freeze,

§

impl<C = MultiCompiler, T = ConfigurableArtifacts> !RefUnwindSafe for Project<C, T>

§

impl<C, T> Send for Project<C, T>
where T: Send,

§

impl<C, T> Sync for Project<C, T>
where T: Sync,

§

impl<C, T> Unpin for Project<C, T>
where C: Unpin, <C as Compiler>::Settings: Unpin, T: Unpin, <C as Compiler>::Language: Unpin,

§

impl<C = MultiCompiler, T = ConfigurableArtifacts> !UnwindSafe for Project<C, T>

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

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

source§

impl<T> MaybeSendSync for T