Struct CreateApplicationInputBuilder

Source
#[non_exhaustive]
pub struct CreateApplicationInputBuilder { /* private fields */ }
Expand description

A builder for CreateApplicationInput.

Implementations§

Source§

impl CreateApplicationInputBuilder

Source

pub fn name(self, input: impl Into<String>) -> Self

The name of the application.

Source

pub fn set_name(self, input: Option<String>) -> Self

The name of the application.

Source

pub fn get_name(&self) -> &Option<String>

The name of the application.

Source

pub fn release_label(self, input: impl Into<String>) -> Self

The Amazon EMR release associated with the application.

This field is required.
Source

pub fn set_release_label(self, input: Option<String>) -> Self

The Amazon EMR release associated with the application.

Source

pub fn get_release_label(&self) -> &Option<String>

The Amazon EMR release associated with the application.

Source

pub fn type(self, input: impl Into<String>) -> Self

The type of application you want to start, such as Spark or Hive.

This field is required.
Source

pub fn set_type(self, input: Option<String>) -> Self

The type of application you want to start, such as Spark or Hive.

Source

pub fn get_type(&self) -> &Option<String>

The type of application you want to start, such as Spark or Hive.

Source

pub fn client_token(self, input: impl Into<String>) -> Self

The client idempotency token of the application to create. Its value must be unique for each request.

This field is required.
Source

pub fn set_client_token(self, input: Option<String>) -> Self

The client idempotency token of the application to create. Its value must be unique for each request.

Source

pub fn get_client_token(&self) -> &Option<String>

The client idempotency token of the application to create. Its value must be unique for each request.

Source

pub fn initial_capacity( self, k: impl Into<String>, v: InitialCapacityConfig, ) -> Self

Adds a key-value pair to initial_capacity.

To override the contents of this collection use set_initial_capacity.

The capacity to initialize when the application is created.

Source

pub fn set_initial_capacity( self, input: Option<HashMap<String, InitialCapacityConfig>>, ) -> Self

The capacity to initialize when the application is created.

Source

pub fn get_initial_capacity( &self, ) -> &Option<HashMap<String, InitialCapacityConfig>>

The capacity to initialize when the application is created.

Source

pub fn maximum_capacity(self, input: MaximumAllowedResources) -> Self

The maximum capacity to allocate when the application is created. This is cumulative across all workers at any given point in time, not just when an application is created. No new resources will be created once any one of the defined limits is hit.

Source

pub fn set_maximum_capacity( self, input: Option<MaximumAllowedResources>, ) -> Self

The maximum capacity to allocate when the application is created. This is cumulative across all workers at any given point in time, not just when an application is created. No new resources will be created once any one of the defined limits is hit.

Source

pub fn get_maximum_capacity(&self) -> &Option<MaximumAllowedResources>

The maximum capacity to allocate when the application is created. This is cumulative across all workers at any given point in time, not just when an application is created. No new resources will be created once any one of the defined limits is hit.

Source

pub fn tags(self, k: impl Into<String>, v: impl Into<String>) -> Self

Adds a key-value pair to tags.

To override the contents of this collection use set_tags.

The tags assigned to the application.

Source

pub fn set_tags(self, input: Option<HashMap<String, String>>) -> Self

The tags assigned to the application.

Source

pub fn get_tags(&self) -> &Option<HashMap<String, String>>

The tags assigned to the application.

Source

pub fn auto_start_configuration(self, input: AutoStartConfig) -> Self

The configuration for an application to automatically start on job submission.

Source

pub fn set_auto_start_configuration( self, input: Option<AutoStartConfig>, ) -> Self

The configuration for an application to automatically start on job submission.

Source

pub fn get_auto_start_configuration(&self) -> &Option<AutoStartConfig>

The configuration for an application to automatically start on job submission.

Source

pub fn auto_stop_configuration(self, input: AutoStopConfig) -> Self

The configuration for an application to automatically stop after a certain amount of time being idle.

Source

pub fn set_auto_stop_configuration(self, input: Option<AutoStopConfig>) -> Self

The configuration for an application to automatically stop after a certain amount of time being idle.

Source

pub fn get_auto_stop_configuration(&self) -> &Option<AutoStopConfig>

The configuration for an application to automatically stop after a certain amount of time being idle.

Source

pub fn network_configuration(self, input: NetworkConfiguration) -> Self

The network configuration for customer VPC connectivity.

Source

pub fn set_network_configuration( self, input: Option<NetworkConfiguration>, ) -> Self

The network configuration for customer VPC connectivity.

Source

pub fn get_network_configuration(&self) -> &Option<NetworkConfiguration>

The network configuration for customer VPC connectivity.

Source

pub fn architecture(self, input: Architecture) -> Self

The CPU architecture of an application.

Source

pub fn set_architecture(self, input: Option<Architecture>) -> Self

The CPU architecture of an application.

Source

pub fn get_architecture(&self) -> &Option<Architecture>

The CPU architecture of an application.

Source

pub fn image_configuration(self, input: ImageConfigurationInput) -> Self

The image configuration for all worker types. You can either set this parameter or imageConfiguration for each worker type in workerTypeSpecifications.

Source

pub fn set_image_configuration( self, input: Option<ImageConfigurationInput>, ) -> Self

The image configuration for all worker types. You can either set this parameter or imageConfiguration for each worker type in workerTypeSpecifications.

Source

pub fn get_image_configuration(&self) -> &Option<ImageConfigurationInput>

The image configuration for all worker types. You can either set this parameter or imageConfiguration for each worker type in workerTypeSpecifications.

Source

pub fn worker_type_specifications( self, k: impl Into<String>, v: WorkerTypeSpecificationInput, ) -> Self

Adds a key-value pair to worker_type_specifications.

To override the contents of this collection use set_worker_type_specifications.

The key-value pairs that specify worker type to WorkerTypeSpecificationInput. This parameter must contain all valid worker types for a Spark or Hive application. Valid worker types include Driver and Executor for Spark applications and HiveDriver and TezTask for Hive applications. You can either set image details in this parameter for each worker type, or in imageConfiguration for all worker types.

Source

pub fn set_worker_type_specifications( self, input: Option<HashMap<String, WorkerTypeSpecificationInput>>, ) -> Self

The key-value pairs that specify worker type to WorkerTypeSpecificationInput. This parameter must contain all valid worker types for a Spark or Hive application. Valid worker types include Driver and Executor for Spark applications and HiveDriver and TezTask for Hive applications. You can either set image details in this parameter for each worker type, or in imageConfiguration for all worker types.

Source

pub fn get_worker_type_specifications( &self, ) -> &Option<HashMap<String, WorkerTypeSpecificationInput>>

The key-value pairs that specify worker type to WorkerTypeSpecificationInput. This parameter must contain all valid worker types for a Spark or Hive application. Valid worker types include Driver and Executor for Spark applications and HiveDriver and TezTask for Hive applications. You can either set image details in this parameter for each worker type, or in imageConfiguration for all worker types.

Source

pub fn runtime_configuration(self, input: Configuration) -> Self

Appends an item to runtime_configuration.

To override the contents of this collection use set_runtime_configuration.

The Configuration specifications to use when creating an application. Each configuration consists of a classification and properties. This configuration is applied to all the job runs submitted under the application.

Source

pub fn set_runtime_configuration( self, input: Option<Vec<Configuration>>, ) -> Self

The Configuration specifications to use when creating an application. Each configuration consists of a classification and properties. This configuration is applied to all the job runs submitted under the application.

Source

pub fn get_runtime_configuration(&self) -> &Option<Vec<Configuration>>

The Configuration specifications to use when creating an application. Each configuration consists of a classification and properties. This configuration is applied to all the job runs submitted under the application.

Source

pub fn monitoring_configuration(self, input: MonitoringConfiguration) -> Self

The configuration setting for monitoring.

Source

pub fn set_monitoring_configuration( self, input: Option<MonitoringConfiguration>, ) -> Self

The configuration setting for monitoring.

Source

pub fn get_monitoring_configuration(&self) -> &Option<MonitoringConfiguration>

The configuration setting for monitoring.

Source

pub fn interactive_configuration(self, input: InteractiveConfiguration) -> Self

The interactive configuration object that enables the interactive use cases to use when running an application.

Source

pub fn set_interactive_configuration( self, input: Option<InteractiveConfiguration>, ) -> Self

The interactive configuration object that enables the interactive use cases to use when running an application.

Source

pub fn get_interactive_configuration(&self) -> &Option<InteractiveConfiguration>

The interactive configuration object that enables the interactive use cases to use when running an application.

Source

pub fn scheduler_configuration(self, input: SchedulerConfiguration) -> Self

The scheduler configuration for batch and streaming jobs running on this application. Supported with release labels emr-7.0.0 and above.

Source

pub fn set_scheduler_configuration( self, input: Option<SchedulerConfiguration>, ) -> Self

The scheduler configuration for batch and streaming jobs running on this application. Supported with release labels emr-7.0.0 and above.

Source

pub fn get_scheduler_configuration(&self) -> &Option<SchedulerConfiguration>

The scheduler configuration for batch and streaming jobs running on this application. Supported with release labels emr-7.0.0 and above.

Source

pub fn build(self) -> Result<CreateApplicationInput, BuildError>

Consumes the builder and constructs a CreateApplicationInput.

Source§

impl CreateApplicationInputBuilder

Source

pub async fn send_with( self, client: &Client, ) -> Result<CreateApplicationOutput, SdkError<CreateApplicationError, HttpResponse>>

Sends a request with this input using the given client.

Trait Implementations§

Source§

impl Clone for CreateApplicationInputBuilder

Source§

fn clone(&self) -> CreateApplicationInputBuilder

Returns a duplicate 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 Debug for CreateApplicationInputBuilder

Source§

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

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

impl Default for CreateApplicationInputBuilder

Source§

fn default() -> CreateApplicationInputBuilder

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

impl PartialEq for CreateApplicationInputBuilder

Source§

fn eq(&self, other: &CreateApplicationInputBuilder) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for CreateApplicationInputBuilder

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

Source§

type Output = T

Should always be Self
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 = 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<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,