pub enum AstNodeKind {
Show 21 variants
Int(i64),
Float(f64),
Bool(bool),
Null,
Str {
segments: Vec<StrSegment>,
},
IndentedStr {
segments: Vec<StrSegment>,
},
Path(String),
Ident(String),
Select {
target: NodeId,
path: Vec<String>,
fallback: Option<NodeId>,
},
HasAttr {
target: NodeId,
path: Vec<String>,
},
List(Vec<NodeId>),
AttrSet {
recursive: bool,
entries: Vec<AttrEntry>,
inherits: Vec<InheritClause>,
},
LetIn {
bindings: Vec<AttrEntry>,
inherits: Vec<InheritClause>,
body: NodeId,
},
With {
env: NodeId,
body: NodeId,
},
Assert {
condition: NodeId,
body: NodeId,
},
Lambda {
param: LambdaParam,
body: NodeId,
},
Apply {
function: NodeId,
argument: NodeId,
},
IfThenElse {
condition: NodeId,
then_branch: NodeId,
else_branch: NodeId,
},
BinOp {
op: BinaryOp,
left: NodeId,
right: NodeId,
},
UnaryOp {
op: UnaryOp,
operand: NodeId,
},
Unknown {
kind: String,
source_text: String,
},
}Expand description
Discriminator for every node variant. Stable IDs by name; append new variants at the bottom of the enum, never reorder (rkyv archive compatibility).
Variants§
Int(i64)
Float(f64)
Bool(bool)
Null
Str
Quoted string (possibly with interpolation, modeled as a concatenation of segments).
Fields
§
segments: Vec<StrSegment>IndentedStr
''…'' indented string.
Fields
§
segments: Vec<StrSegment>Path(String)
Ident(String)
Select
expr.attr.path (with optional or fallback).
HasAttr
expr ? attr.path — attribute-presence test.
List(Vec<NodeId>)
AttrSet
LetIn
With
Assert
Lambda
Apply
IfThenElse
BinOp
UnaryOp
Unknown
Construct we don’t model yet. source_text is the verbatim
span from the rnix CST so the underlying meaning is recoverable.
Trait Implementations§
Source§impl Archive for AstNodeKind
impl Archive for AstNodeKind
Source§type Archived = ArchivedAstNodeKind
type Archived = ArchivedAstNodeKind
The archived representation of this type. Read more
Source§type Resolver = AstNodeKindResolver
type Resolver = AstNodeKindResolver
The resolver for this type. It must contain all the additional
information from serializing needed to make the archived type from
the normal type.
Source§fn resolve(
&self,
resolver: <Self as Archive>::Resolver,
out: Place<<Self as Archive>::Archived>,
)
fn resolve( &self, resolver: <Self as Archive>::Resolver, out: Place<<Self as Archive>::Archived>, )
Creates the archived version of this value at the given position and
writes it to the given output. Read more
Source§const COPY_OPTIMIZATION: CopyOptimization<Self> = _
const COPY_OPTIMIZATION: CopyOptimization<Self> = _
An optimization flag that allows the bytes of this type to be copied
directly to a writer instead of calling
serialize. Read moreSource§impl Clone for AstNodeKind
impl Clone for AstNodeKind
Source§fn clone(&self) -> AstNodeKind
fn clone(&self) -> AstNodeKind
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 AstNodeKind
impl Debug for AstNodeKind
Source§impl<'de> Deserialize<'de> for AstNodeKind
impl<'de> Deserialize<'de> for AstNodeKind
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>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<__D: Fallible + ?Sized> Deserialize<AstNodeKind, __D> for Archived<AstNodeKind>where
i64: Archive,
<i64 as Archive>::Archived: Deserialize<i64, __D>,
f64: Archive,
<f64 as Archive>::Archived: Deserialize<f64, __D>,
bool: Archive,
<bool as Archive>::Archived: Deserialize<bool, __D>,
Vec<StrSegment>: Archive,
<Vec<StrSegment> as Archive>::Archived: Deserialize<Vec<StrSegment>, __D>,
String: Archive,
<String as Archive>::Archived: Deserialize<String, __D>,
NodeId: Archive,
<NodeId as Archive>::Archived: Deserialize<NodeId, __D>,
Vec<String>: Archive,
<Vec<String> as Archive>::Archived: Deserialize<Vec<String>, __D>,
Option<NodeId>: Archive,
<Option<NodeId> as Archive>::Archived: Deserialize<Option<NodeId>, __D>,
Vec<NodeId>: Archive,
<Vec<NodeId> as Archive>::Archived: Deserialize<Vec<NodeId>, __D>,
Vec<AttrEntry>: Archive,
<Vec<AttrEntry> as Archive>::Archived: Deserialize<Vec<AttrEntry>, __D>,
Vec<InheritClause>: Archive,
<Vec<InheritClause> as Archive>::Archived: Deserialize<Vec<InheritClause>, __D>,
LambdaParam: Archive,
<LambdaParam as Archive>::Archived: Deserialize<LambdaParam, __D>,
BinaryOp: Archive,
<BinaryOp as Archive>::Archived: Deserialize<BinaryOp, __D>,
UnaryOp: Archive,
<UnaryOp as Archive>::Archived: Deserialize<UnaryOp, __D>,
impl<__D: Fallible + ?Sized> Deserialize<AstNodeKind, __D> for Archived<AstNodeKind>where
i64: Archive,
<i64 as Archive>::Archived: Deserialize<i64, __D>,
f64: Archive,
<f64 as Archive>::Archived: Deserialize<f64, __D>,
bool: Archive,
<bool as Archive>::Archived: Deserialize<bool, __D>,
Vec<StrSegment>: Archive,
<Vec<StrSegment> as Archive>::Archived: Deserialize<Vec<StrSegment>, __D>,
String: Archive,
<String as Archive>::Archived: Deserialize<String, __D>,
NodeId: Archive,
<NodeId as Archive>::Archived: Deserialize<NodeId, __D>,
Vec<String>: Archive,
<Vec<String> as Archive>::Archived: Deserialize<Vec<String>, __D>,
Option<NodeId>: Archive,
<Option<NodeId> as Archive>::Archived: Deserialize<Option<NodeId>, __D>,
Vec<NodeId>: Archive,
<Vec<NodeId> as Archive>::Archived: Deserialize<Vec<NodeId>, __D>,
Vec<AttrEntry>: Archive,
<Vec<AttrEntry> as Archive>::Archived: Deserialize<Vec<AttrEntry>, __D>,
Vec<InheritClause>: Archive,
<Vec<InheritClause> as Archive>::Archived: Deserialize<Vec<InheritClause>, __D>,
LambdaParam: Archive,
<LambdaParam as Archive>::Archived: Deserialize<LambdaParam, __D>,
BinaryOp: Archive,
<BinaryOp as Archive>::Archived: Deserialize<BinaryOp, __D>,
UnaryOp: Archive,
<UnaryOp as Archive>::Archived: Deserialize<UnaryOp, __D>,
Source§fn deserialize(
&self,
deserializer: &mut __D,
) -> Result<AstNodeKind, <__D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut __D, ) -> Result<AstNodeKind, <__D as Fallible>::Error>
Deserializes using the given deserializer
Source§impl PartialEq for AstNodeKind
impl PartialEq for AstNodeKind
Source§impl Serialize for AstNodeKind
impl Serialize for AstNodeKind
Source§impl<__S: Fallible + ?Sized> Serialize<__S> for AstNodeKindwhere
i64: Serialize<__S>,
f64: Serialize<__S>,
bool: Serialize<__S>,
Vec<StrSegment>: Serialize<__S>,
String: Serialize<__S>,
NodeId: Serialize<__S>,
Vec<String>: Serialize<__S>,
Option<NodeId>: Serialize<__S>,
Vec<NodeId>: Serialize<__S>,
Vec<AttrEntry>: Serialize<__S>,
Vec<InheritClause>: Serialize<__S>,
LambdaParam: Serialize<__S>,
BinaryOp: Serialize<__S>,
UnaryOp: Serialize<__S>,
impl<__S: Fallible + ?Sized> Serialize<__S> for AstNodeKindwhere
i64: Serialize<__S>,
f64: Serialize<__S>,
bool: Serialize<__S>,
Vec<StrSegment>: Serialize<__S>,
String: Serialize<__S>,
NodeId: Serialize<__S>,
Vec<String>: Serialize<__S>,
Option<NodeId>: Serialize<__S>,
Vec<NodeId>: Serialize<__S>,
Vec<AttrEntry>: Serialize<__S>,
Vec<InheritClause>: Serialize<__S>,
LambdaParam: Serialize<__S>,
BinaryOp: Serialize<__S>,
UnaryOp: Serialize<__S>,
impl StructuralPartialEq for AstNodeKind
Auto Trait Implementations§
impl Freeze for AstNodeKind
impl RefUnwindSafe for AstNodeKind
impl Send for AstNodeKind
impl Sync for AstNodeKind
impl Unpin for AstNodeKind
impl UnsafeUnpin for AstNodeKind
impl UnwindSafe for AstNodeKind
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> ArchiveUnsized for Twhere
T: Archive,
impl<T> ArchiveUnsized for Twhere
T: Archive,
Source§type Archived = <T as Archive>::Archived
type Archived = <T as Archive>::Archived
The archived counterpart of this type. Unlike
Archive, it may be
unsized. Read moreSource§fn archived_metadata(
&self,
) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
fn archived_metadata( &self, ) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
Creates the archived version of the metadata for this value.
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<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.