pub struct TransformPlugin {
pub include: Vec<StringOrRegex>,
pub exclude: Vec<StringOrRegex>,
pub jsx_refresh_include: Vec<StringOrRegex>,
pub jsx_refresh_exclude: Vec<StringOrRegex>,
pub jsx_inject: Option<String>,
pub is_server_consumer: bool,
pub sourcemap: bool,
pub transform_options: BundlerTransformOptions,
}
Fields§
§include: Vec<StringOrRegex>
§exclude: Vec<StringOrRegex>
§jsx_refresh_include: Vec<StringOrRegex>
§jsx_refresh_exclude: Vec<StringOrRegex>
§jsx_inject: Option<String>
§is_server_consumer: bool
§sourcemap: bool
§transform_options: BundlerTransformOptions
Implementations§
Source§impl TransformPlugin
impl TransformPlugin
pub fn filter( &self, id: &str, cwd: &str, module_type: &Option<ModuleType>, ) -> bool
pub fn jsx_refresh_filter(&self, id: &str, cwd: &str) -> JsxRefreshFilter
pub fn get_modified_transform_options( &self, ctx: &SharedTransformPluginContext, id: &str, cwd: &str, ext: Option<&str>, code: &str, ) -> Result<(SourceType, TransformOptions)>
Trait Implementations§
Source§impl Debug for TransformPlugin
impl Debug for TransformPlugin
Source§impl Default for TransformPlugin
impl Default for TransformPlugin
Source§fn default() -> TransformPlugin
fn default() -> TransformPlugin
Source§impl Plugin for TransformPlugin
only handle ecma like syntax, jsx
,tsx
,ts
impl Plugin for TransformPlugin
only handle ecma like syntax, jsx
,tsx
,ts
fn name(&self) -> Cow<'static, str>
async fn transform( &self, ctx: SharedTransformPluginContext, args: &HookTransformArgs<'_>, ) -> HookTransformReturn
fn register_hook_usage(&self) -> HookUsage
fn build_start( &self, _ctx: &PluginContext, _args: &HookBuildStartArgs<'_>, ) -> impl Future<Output = Result<(), Error>> + Send
fn build_start_meta(&self) -> Option<PluginHookMeta>
fn resolve_id( &self, _ctx: &PluginContext, _args: &HookResolveIdArgs<'_>, ) -> impl Future<Output = Result<Option<HookResolveIdOutput>, Error>> + Send
fn resolve_id_meta(&self) -> Option<PluginHookMeta>
Source§fn resolve_dynamic_import(
&self,
_ctx: &PluginContext,
_args: &HookResolveIdArgs<'_>,
) -> impl Future<Output = Result<Option<HookResolveIdOutput>, Error>> + Send
fn resolve_dynamic_import( &self, _ctx: &PluginContext, _args: &HookResolveIdArgs<'_>, ) -> impl Future<Output = Result<Option<HookResolveIdOutput>, Error>> + Send
resolve_id
instead.fn resolve_dynamic_import_meta(&self) -> Option<PluginHookMeta>
fn load( &self, _ctx: &PluginContext, _args: &HookLoadArgs<'_>, ) -> impl Future<Output = Result<Option<HookLoadOutput>, Error>> + Send
fn load_meta(&self) -> Option<PluginHookMeta>
fn transform_meta(&self) -> Option<PluginHookMeta>
fn module_parsed( &self, _ctx: &PluginContext, _module_info: Arc<ModuleInfo>, _normal_module: &NormalModule, ) -> impl Future<Output = Result<(), Error>> + Send
fn module_parsed_meta(&self) -> Option<PluginHookMeta>
fn build_end( &self, _ctx: &PluginContext, _args: Option<&HookBuildEndArgs<'_>>, ) -> impl Future<Output = Result<(), Error>> + Send
fn build_end_meta(&self) -> Option<PluginHookMeta>
fn render_start( &self, _ctx: &PluginContext, _args: &HookRenderStartArgs<'_>, ) -> impl Future<Output = Result<(), Error>> + Send
fn render_start_meta(&self) -> Option<PluginHookMeta>
fn intro( &self, _ctx: &PluginContext, _args: &HookAddonArgs, ) -> impl Future<Output = Result<Option<String>, Error>> + Send
fn intro_meta(&self) -> Option<PluginHookMeta>
fn outro( &self, _ctx: &PluginContext, _args: &HookAddonArgs, ) -> impl Future<Output = Result<Option<String>, Error>> + Send
fn outro_meta(&self) -> Option<PluginHookMeta>
fn render_chunk( &self, _ctx: &PluginContext, _args: &HookRenderChunkArgs<'_>, ) -> impl Future<Output = Result<Option<HookRenderChunkOutput>, Error>> + Send
fn render_chunk_meta(&self) -> Option<PluginHookMeta>
fn augment_chunk_hash( &self, _ctx: &PluginContext, _chunk: Arc<RollupRenderedChunk>, ) -> impl Future<Output = Result<Option<String>, Error>> + Send
fn augment_chunk_hash_meta(&self) -> Option<PluginHookMeta>
fn render_error( &self, _ctx: &PluginContext, _args: &HookRenderErrorArgs<'_>, ) -> impl Future<Output = Result<(), Error>> + Send
fn render_error_meta(&self) -> Option<PluginHookMeta>
fn generate_bundle( &self, _ctx: &PluginContext, _args: &mut HookGenerateBundleArgs<'_>, ) -> impl Future<Output = Result<(), Error>> + Send
fn generate_bundle_meta(&self) -> Option<PluginHookMeta>
fn write_bundle( &self, _ctx: &PluginContext, _args: &mut HookWriteBundleArgs<'_>, ) -> impl Future<Output = Result<(), Error>> + Send
fn write_bundle_meta(&self) -> Option<PluginHookMeta>
fn close_bundle( &self, _ctx: &PluginContext, ) -> impl Future<Output = Result<(), Error>> + Send
fn close_bundle_meta(&self) -> Option<PluginHookMeta>
fn watch_change( &self, _ctx: &PluginContext, _path: &str, _event: WatcherChangeKind, ) -> impl Future<Output = Result<(), Error>> + Send
fn watch_change_meta(&self) -> Option<PluginHookMeta>
fn close_watcher( &self, _ctx: &PluginContext, ) -> impl Future<Output = Result<(), Error>> + Send
fn close_watcher_meta(&self) -> Option<PluginHookMeta>
fn transform_ast( &self, _ctx: &PluginContext, args: HookTransformAstArgs<'_>, ) -> impl Future<Output = Result<EcmaAst, Error>> + Send
fn transform_ast_meta(&self) -> Option<PluginHookMeta>
Auto Trait Implementations§
impl Freeze for TransformPlugin
impl RefUnwindSafe for TransformPlugin
impl Send for TransformPlugin
impl Sync for TransformPlugin
impl Unpin for TransformPlugin
impl UnwindSafe for TransformPlugin
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg
or
a color-specific method, such as OwoColorize::green
, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg
or
a color-specific method, such as OwoColorize::on_yellow
, Read moreSource§fn fg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
Source§fn bg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
Source§fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
Source§fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
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 bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
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>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
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 rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
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 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.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
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§impl<T> Pluginable for Twhere
T: Plugin,
impl<T> Pluginable for Twhere
T: Plugin,
fn call_name(&self) -> Cow<'static, str>
fn call_build_start<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 PluginContext,
args: &'life2 HookBuildStartArgs<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
T: 'async_trait,
fn call_build_start_meta(&self) -> Option<PluginHookMeta>
fn call_resolve_id<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 PluginContext,
args: &'life2 HookResolveIdArgs<'_>,
) -> Pin<Box<dyn Future<Output = Result<Option<HookResolveIdOutput>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
T: 'async_trait,
fn call_resolve_id_meta(&self) -> Option<PluginHookMeta>
Source§fn call_resolve_dynamic_import<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 PluginContext,
args: &'life2 HookResolveIdArgs<'_>,
) -> Pin<Box<dyn Future<Output = Result<Option<HookResolveIdOutput>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
T: 'async_trait,
fn call_resolve_dynamic_import<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 PluginContext,
args: &'life2 HookResolveIdArgs<'_>,
) -> Pin<Box<dyn Future<Output = Result<Option<HookResolveIdOutput>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
T: 'async_trait,
resolve_id
instead.