pub struct MacroPluginLongId(pub Arc<dyn MacroPlugin>);
Expand description
An ID allowing for interning the MacroPlugin
into Salsa database.
Tuple Fields§
§0: Arc<dyn MacroPlugin>
Trait Implementations§
Source§impl Clone for MacroPluginLongId
impl Clone for MacroPluginLongId
Source§fn clone(&self) -> MacroPluginLongId
fn clone(&self) -> MacroPluginLongId
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for MacroPluginLongId
impl Debug for MacroPluginLongId
Source§impl Hash for MacroPluginLongId
impl Hash for MacroPluginLongId
Source§impl<'a> Intern<'a, dyn DefsGroup + 'a, MacroPluginId> for MacroPluginLongId
impl<'a> Intern<'a, dyn DefsGroup + 'a, MacroPluginId> for MacroPluginLongId
Source§impl<'a> LookupIntern<'a, dyn DefsGroup + 'a, MacroPluginLongId> for MacroPluginId
impl<'a> LookupIntern<'a, dyn DefsGroup + 'a, MacroPluginLongId> for MacroPluginId
fn lookup_intern( &self, db: &(impl Upcast<dyn DefsGroup + 'a> + ?Sized), ) -> MacroPluginLongId
Source§impl MacroPlugin for MacroPluginLongId
impl MacroPlugin for MacroPluginLongId
Source§fn generate_code(
&self,
db: &dyn SyntaxGroup,
item_ast: ModuleItem,
metadata: &MacroPluginMetadata<'_>,
) -> PluginResult
fn generate_code( &self, db: &dyn SyntaxGroup, item_ast: ModuleItem, metadata: &MacroPluginMetadata<'_>, ) -> PluginResult
Generates code for an item. If no code should be generated returns None.
Otherwise, returns (virtual_module_name, module_content), and a virtual submodule
with that name and content should be created.
Source§fn declared_attributes(&self) -> Vec<String>
fn declared_attributes(&self) -> Vec<String>
Attributes this plugin uses.
Attributes the plugin uses without declaring here are likely to cause a compilation error
for unknown attribute.
Note: They may not cause a diagnostic if some other plugin declares such attribute, but
plugin writers should not rely on that.
Source§fn declared_derives(&self) -> Vec<String>
fn declared_derives(&self) -> Vec<String>
Derives this plugin supplies.
Any derived classes the plugin supplies without declaring here are likely to cause a
compilation error for unknown derive.
Note: They may not cause a diagnostic if some other plugin declares such derive, but
plugin writers should not rely on that.
Source§fn executable_attributes(&self) -> Vec<String>
fn executable_attributes(&self) -> Vec<String>
Attributes that should mark the function as an executable.
Functions marked with executable attributes will be listed
in a dedicated field in the generated program.
Must return a subset of
declared_attributes
.
This mechanism is optional.Source§fn phantom_type_attributes(&self) -> Vec<String>
fn phantom_type_attributes(&self) -> Vec<String>
Attributes that mark a type as a phantom type. Must return a subset of
declared_attributes
.
This mechanism is optional.Source§fn plugin_type_id(&self) -> TypeId
fn plugin_type_id(&self) -> TypeId
A
TypeId
of the plugin, used to compare the concrete types
of plugins given as trait objects.Source§impl PartialEq for MacroPluginLongId
impl PartialEq for MacroPluginLongId
impl Eq for MacroPluginLongId
Auto Trait Implementations§
impl Freeze for MacroPluginLongId
impl !RefUnwindSafe for MacroPluginLongId
impl Send for MacroPluginLongId
impl Sync for MacroPluginLongId
impl Unpin for MacroPluginLongId
impl !UnwindSafe for MacroPluginLongId
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.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>
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 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>
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