pub enum Attribute {
Show 13 variants
Opaque,
Exclude,
Rename(String),
VariantsPrefix(String),
VariantsSuffix(String),
Transparent,
IsPrecondition(ItemId),
IsPostcondition(ItemId),
HasPrecondition(FunDeclId),
HasPostcondition(FunDeclId),
DocComment(String),
Builtin(AttributeKind),
Unknown(RawAttribute),
}Expand description
Attributes (#[...]).
Variants§
Opaque
Do not translate the body of this item.
Written #[charon::opaque]
Exclude
Do not translate this item at all.
Written #[charon::exclude]
Rename(String)
Provide a new name that consumers of the llbc can use.
Written #[charon::rename("new_name")]
VariantsPrefix(String)
For enums only: rename the variants by pre-pending their names with the given prefix.
Written #[charon::variants_prefix("prefix_")].
VariantsSuffix(String)
Same as VariantsPrefix, but appends to the name instead of pre-pending.
Transparent
The structure is treated as a transparent wrapper around its sole field.
Written #[charon::transparent].
IsPrecondition(ItemId)
An item annotated with #[charon::precondition]. This makes it a precondition for its
parent item.
IsPostcondition(ItemId)
An item annotated with #[charon::postcondition]. This makes it a postcondition for its
parent item.
HasPrecondition(FunDeclId)
An item that has a precondition that applies to it. The referenced item is a function the specifies the condition.
HasPostcondition(FunDeclId)
An item that has a postcondition that applies to it. The referenced item is a function the specifies the condition.
DocComment(String)
A doc-comment such as /// ....
Builtin(AttributeKind)
A built-in attribute.
Unknown(RawAttribute)
None of the above.
Implementations§
Source§impl Attribute
impl Attribute
pub fn is_opaque(&self) -> bool
pub fn is_exclude(&self) -> bool
pub fn is_rename(&self) -> bool
pub fn is_variants_prefix(&self) -> bool
pub fn is_variants_suffix(&self) -> bool
pub fn is_transparent(&self) -> bool
pub fn is_is_precondition(&self) -> bool
pub fn is_is_postcondition(&self) -> bool
pub fn is_has_precondition(&self) -> bool
pub fn is_has_postcondition(&self) -> bool
pub fn is_doc_comment(&self) -> bool
pub fn is_builtin(&self) -> bool
pub fn is_unknown(&self) -> bool
Source§impl Attribute
impl Attribute
pub fn as_opaque(&self) -> Option<()>
pub fn as_exclude(&self) -> Option<()>
pub fn as_rename(&self) -> Option<&String>
pub fn as_variants_prefix(&self) -> Option<&String>
pub fn as_variants_suffix(&self) -> Option<&String>
pub fn as_transparent(&self) -> Option<()>
pub fn as_is_precondition(&self) -> Option<&ItemId>
pub fn as_is_postcondition(&self) -> Option<&ItemId>
pub fn as_has_precondition(&self) -> Option<&FunDeclId>
pub fn as_has_postcondition(&self) -> Option<&FunDeclId>
pub fn as_doc_comment(&self) -> Option<&String>
pub fn as_builtin(&self) -> Option<&AttributeKind>
pub fn as_unknown(&self) -> Option<&RawAttribute>
Source§impl Attribute
impl Attribute
pub fn as_opaque_mut(&mut self) -> Option<()>
pub fn as_exclude_mut(&mut self) -> Option<()>
pub fn as_rename_mut(&mut self) -> Option<&mut String>
pub fn as_variants_prefix_mut(&mut self) -> Option<&mut String>
pub fn as_variants_suffix_mut(&mut self) -> Option<&mut String>
pub fn as_transparent_mut(&mut self) -> Option<()>
pub fn as_is_precondition_mut(&mut self) -> Option<&mut ItemId>
pub fn as_is_postcondition_mut(&mut self) -> Option<&mut ItemId>
pub fn as_has_precondition_mut(&mut self) -> Option<&mut FunDeclId>
pub fn as_has_postcondition_mut(&mut self) -> Option<&mut FunDeclId>
pub fn as_doc_comment_mut(&mut self) -> Option<&mut String>
pub fn as_builtin_mut(&mut self) -> Option<&mut AttributeKind>
pub fn as_unknown_mut(&mut self) -> Option<&mut RawAttribute>
Source§impl Attribute
impl Attribute
pub fn to_opaque(self) -> Option<()>
pub fn to_exclude(self) -> Option<()>
pub fn to_rename(self) -> Option<String>
pub fn to_variants_prefix(self) -> Option<String>
pub fn to_variants_suffix(self) -> Option<String>
pub fn to_transparent(self) -> Option<()>
pub fn to_is_precondition(self) -> Option<ItemId>
pub fn to_is_postcondition(self) -> Option<ItemId>
pub fn to_has_precondition(self) -> Option<FunDeclId>
pub fn to_has_postcondition(self) -> Option<FunDeclId>
pub fn to_doc_comment(self) -> Option<String>
pub fn to_builtin(self) -> Option<AttributeKind>
pub fn to_unknown(self) -> Option<RawAttribute>
Trait Implementations§
Source§impl AstVisitable for Attribute
impl AstVisitable for Attribute
Source§fn drive<V: VisitAst>(&self, v: &mut V) -> ControlFlow<V::Break>
fn drive<V: VisitAst>(&self, v: &mut V) -> ControlFlow<V::Break>
visit_$any
method if it exists, otherwise visit_inner.Source§fn drive_mut<V: VisitAstMut>(&mut self, v: &mut V) -> ControlFlow<V::Break>
fn drive_mut<V: VisitAstMut>(&mut self, v: &mut V) -> ControlFlow<V::Break>
visit_$any
method if it exists, otherwise visit_inner.Source§fn drive_two<V: ZipAst>(&self, other: &Self, v: &mut V) -> ControlFlow<V::Break>
fn drive_two<V: ZipAst>(&self, other: &Self, v: &mut V) -> ControlFlow<V::Break>
visit_$any
method if it exists, otherwise visit_inner.Source§fn dyn_visit<T: AstVisitable>(&self, f: impl FnMut(&T))where
Self: Sized,
fn dyn_visit<T: AstVisitable>(&self, f: impl FnMut(&T))where
Self: Sized,
self, in pre-order traversal.Source§fn dyn_visit_mut<T: AstVisitable>(&mut self, f: impl FnMut(&mut T))where
Self: Sized,
fn dyn_visit_mut<T: AstVisitable>(&mut self, f: impl FnMut(&mut T))where
Self: Sized,
self, in pre-order traversal.Source§impl<'de> Deserialize<'de> for Attribute
impl<'de> Deserialize<'de> for Attribute
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<'s, V> Drive<'s, V> for Attributewhere
V: Visitor + Visit<'s, String> + Visit<'s, ItemId> + Visit<'s, FunDeclId> + Visit<'s, RawAttribute>,
impl<'s, V> Drive<'s, V> for Attributewhere
V: Visitor + Visit<'s, String> + Visit<'s, ItemId> + Visit<'s, FunDeclId> + Visit<'s, RawAttribute>,
Source§fn drive_inner(&'s self, visitor: &mut V) -> ControlFlow<V::Break>
fn drive_inner(&'s self, visitor: &mut V) -> ControlFlow<V::Break>
v.visit() on the immediate contents of self.Source§impl<'s, V> DriveMut<'s, V> for Attributewhere
V: Visitor + VisitMut<'s, String> + VisitMut<'s, ItemId> + VisitMut<'s, FunDeclId> + VisitMut<'s, RawAttribute>,
impl<'s, V> DriveMut<'s, V> for Attributewhere
V: Visitor + VisitMut<'s, String> + VisitMut<'s, ItemId> + VisitMut<'s, FunDeclId> + VisitMut<'s, RawAttribute>,
Source§fn drive_inner_mut(&'s mut self, visitor: &mut V) -> ControlFlow<V::Break>
fn drive_inner_mut(&'s mut self, visitor: &mut V) -> ControlFlow<V::Break>
v.visit() on the immediate contents of self.Source§impl<'s, V> DriveTwo<'s, V> for Attribute
impl<'s, V> DriveTwo<'s, V> for Attribute
Source§fn drive_two_inner(
&'s self,
other: &'s Self,
visitor: &mut V,
) -> ControlFlow<V::Break>
fn drive_two_inner( &'s self, other: &'s Self, visitor: &mut V, ) -> ControlFlow<V::Break>
v.visit() on the immediate contents of self and other, if they correspond. If
the values don’t match up, this returns Break(Default::default()).impl Eq for Attribute
impl StructuralPartialEq for Attribute
Auto Trait Implementations§
impl Freeze for Attribute
impl RefUnwindSafe for Attribute
impl Send for Attribute
impl Sync for Attribute
impl Unpin for Attribute
impl UnsafeUnpin for Attribute
impl UnwindSafe for Attribute
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<I, T> ExtractContext<I, ()> for T
impl<I, T> ExtractContext<I, ()> for T
§fn extract_context(self, _original_input: I)
fn extract_context(self, _original_input: I)
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more§impl<I> RecreateContext<I> for I
impl<I> RecreateContext<I> for I
§fn recreate_context(_original_input: I, tail: I) -> I
fn recreate_context(_original_input: I, tail: I) -> I
Source§impl<T> TyVisitable for Twhere
T: AstVisitable,
impl<T> TyVisitable for Twhere
T: AstVisitable,
Source§fn visit_vars(&mut self, v: &mut impl VarsVisitor)
fn visit_vars(&mut self, v: &mut impl VarsVisitor)
self, as seen from the outside of self. This means
that any variable bound inside self will be skipped, and all the seen De Bruijn indices
will count from the outside of self.Source§fn substitute(self, generics: &GenericArgs) -> Self
fn substitute(self, generics: &GenericArgs) -> Self
self by replacing them with the provided values.
Note: if self is an item that comes from a TraitDecl, you must use
substitute_with_self or substitute_inner_binder, otherwise you’ll get panics.Source§fn substitute_inner_binder(self, generics: &GenericArgs) -> Self
fn substitute_inner_binder(self, generics: &GenericArgs) -> Self
self by replacing them with the provided values.
This is appropriate when substituting an inner binder.Source§fn substitute_explicits(self, generics: &GenericArgs) -> Self
fn substitute_explicits(self, generics: &GenericArgs) -> Self
Source§fn substitute_with_self(
self,
generics: &GenericArgs,
self_ref: &TraitRefKind,
) -> Self
fn substitute_with_self( self, generics: &GenericArgs, self_ref: &TraitRefKind, ) -> Self
TraitRefKind::SelfId trait ref.Source§fn substitute_with_tref(self, tref: &TraitRef) -> Self
fn substitute_with_tref(self, tref: &TraitRef) -> Self
TraitRefKind::SelfId trait ref.Source§fn try_substitute_with_tref(
self,
tref: &TraitRef,
) -> Result<Self, GenericsMismatch>
fn try_substitute_with_tref( self, tref: &TraitRef, ) -> Result<Self, GenericsMismatch>
TraitRefKind::SelfId trait ref.fn try_substitute( self, generics: &GenericArgs, ) -> Result<Self, GenericsMismatch>
fn try_substitute_with_self( self, generics: &GenericArgs, self_ref: &TraitRefKind, ) -> Result<Self, GenericsMismatch>
Source§fn move_under_binder(self) -> Self
fn move_under_binder(self) -> Self
Source§fn move_under_binders(self, depth: DeBruijnId) -> Self
fn move_under_binders(self, depth: DeBruijnId) -> Self
depth binders.Source§fn move_from_under_binder(self) -> Option<Self>
fn move_from_under_binder(self) -> Option<Self>
Source§fn move_from_under_binders(self, depth: DeBruijnId) -> Option<Self>
fn move_from_under_binders(self, depth: DeBruijnId) -> Option<Self>
depth binders. Returns None if it contains a variable bound in
one of these depth binders.Source§fn visit_db_id<B>(
&mut self,
f: impl FnMut(&mut DeBruijnId) -> ControlFlow<B>,
) -> ControlFlow<B>
fn visit_db_id<B>( &mut self, f: impl FnMut(&mut DeBruijnId) -> ControlFlow<B>, ) -> ControlFlow<B>
self, as seen from the outside of self. This means
that any variable bound inside self will be skipped, and all the seen indices will count
from the outside of self.