pub enum ConstantExprKind {
Literal(ConstantLiteral),
Adt {
kind: VariantKind,
fields: Vec<ConstantFieldExpr>,
},
Array {
fields: Vec<ConstantExpr>,
},
Tuple {
fields: Vec<ConstantExpr>,
},
NamedGlobal(ItemRef),
Borrow(ConstantExpr),
RawBorrow {
mutability: Mutability,
arg: ConstantExpr,
},
ConstRef {
id: ParamConst,
},
FnDef(ItemRef),
FnPtr(ItemRef),
Memory(Vec<u8>),
Todo(String),
}Expand description
The subset of expressions that corresponds to constants.
Variants§
Literal(ConstantLiteral)
Adt
Array
Fields
§
fields: Vec<ConstantExpr>Tuple
Fields
§
fields: Vec<ConstantExpr>NamedGlobal(ItemRef)
A top-level or associated constant.
Remark: constants can have generic parameters. Example:
struct V<const N: usize, T> {
x: [T; N],
}
impl<const N: usize, T> V<N, T> {
const LEN: usize = N; // This has generics <N, T>
}
impl Foo for Bar {
const C : usize = 32; // <-
}If options.inline_anon_consts is false, this is also used for inline const blocks and
advanced const generics expressions.
Borrow(ConstantExpr)
A shared reference to a static variable.
RawBorrow
A raw borrow (*const or *mut).
ConstRef
Fields
§
id: ParamConstFnDef(ItemRef)
A function definition, corresponding to a particular item. This is a ZST, unlike FnPtr.
FnPtr(ItemRef)
A function pointer. This is an actual pointer to that function.
Memory(Vec<u8>)
A blob of memory containing the byte representation of the value. This can occur when evaluating MIR constants. Interpreting this back to a structured value is left as an exercice to the consumer.
Todo(String)
Implementations§
Trait Implementations§
Source§impl Clone for ConstantExprKind
impl Clone for ConstantExprKind
Source§fn clone(&self) -> ConstantExprKind
fn clone(&self) -> ConstantExprKind
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · 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 ConstantExprKind
impl Debug for ConstantExprKind
Source§impl Hash for ConstantExprKind
impl Hash for ConstantExprKind
Source§impl PartialEq for ConstantExprKind
impl PartialEq for ConstantExprKind
Source§fn eq(&self, other: &ConstantExprKind) -> bool
fn eq(&self, other: &ConstantExprKind) -> bool
Tests for
self and other values to be equal, and is used by ==.impl Eq for ConstantExprKind
impl StructuralPartialEq for ConstantExprKind
Auto Trait Implementations§
impl Freeze for ConstantExprKind
impl RefUnwindSafe for ConstantExprKind
impl Send for ConstantExprKind
impl Sync for ConstantExprKind
impl Unpin for ConstantExprKind
impl UnsafeUnpin for ConstantExprKind
impl UnwindSafe for ConstantExprKind
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,
§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
Checks if this value is equivalent to the given key. Read more
§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
Compare self to
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)
Given the context attached to a nom error, and given the original
input to the nom parser, extract more the useful context information. Read more
§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>
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§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
Given the original input, as well as the context reported by nom,
recreate a context in the original string where the error occurred. Read more