Skip to main content

ToTokens

Trait ToTokens 

Source
pub trait ToTokens {
    // Required method
    fn to_tokens(&self, output: &mut TokenStream);

    // Provided methods
    fn to_token_stream(&self) -> TokenStream { ... }
    fn to_m2(&self) -> String { ... }
    fn to_code(&self) -> String { ... }
}

Required Methods§

Source

fn to_tokens(&self, output: &mut TokenStream)

Provided Methods§

Source

fn to_token_stream(&self) -> TokenStream

Examples found in repository?
examples/parse_emit_walkthrough.rs (line 55)
54    fn to_tokens(&self, output: &mut TokenStream) {
55        output.extend(self.left.to_token_stream());
56        output.extend(self.operator.to_token_stream());
57        output.extend(self.right.to_token_stream());
58    }
59}
60
61fn main() -> Result<(), TokenParseError> {
62    let quoted = quote_m2!(left + right);
63    println!("1. quote_m2! produced:\n{quoted:#?}\n");
64
65    let parsed: Addition = parse1(quoted)?;
66    println!("2. Parse produced:\n{parsed:#?}\n");
67
68    let emitted = parsed.to_token_stream();
69    println!("3. ToTokens produced:\n{emitted:#?}\n");
70    println!("4. Display merged those tokens as: {emitted}");
71
72    let reparsed: Addition = parse1(emitted)?;
73    assert_eq!(reparsed, parsed);
74
75    Ok(())
76}
Source

fn to_m2(&self) -> String

Source

fn to_code(&self) -> String

Examples found in repository?
examples/hierarchy_visit_emit.rs (line 32)
17fn main() -> Result<(), ParseError> {
18    let quoted = quote_m2! {
19        left + right 2
20    };
21    let source_file = parse_tokens(&quoted, SourceId(1))?;
22    let AnyCell::ExpressionCell(cell) = &source_file.elements[0] else {
23        panic!("quoted expression did not reconstruct as an ExpressionCell");
24    };
25    require_cell(cell);
26
27    let mut collector = SymbolCollector::default();
28    collector.visit_source_file(&source_file);
29
30    println!("hierarchy: CellNode -> ExpressionCell -> AnyCell -> SourceFile");
31    println!("visited: {}", collector.symbols.join(", "));
32    print!("generated: {}", source_file.to_code());
33    Ok(())
34}

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<T: ToTokens + ?Sized> ToTokens for &T

Source§

fn to_tokens(&self, output: &mut TokenStream)

Source§

impl<T: ToTokens + ?Sized> ToTokens for Box<T>

Source§

fn to_tokens(&self, output: &mut TokenStream)

Source§

impl<T: ToTokens> ToTokens for Option<T>

Source§

fn to_tokens(&self, output: &mut TokenStream)

Source§

impl<T: ToTokens> ToTokens for Vec<T>

Source§

fn to_tokens(&self, output: &mut TokenStream)

Source§

impl<T: ToTokens> ToTokens for [T]

Source§

fn to_tokens(&self, output: &mut TokenStream)

Implementors§

Source§

impl ToTokens for AdjacentExpression

Source§

impl ToTokens for AngleBarList

Source§

impl ToTokens for AnyCell

Source§

impl ToTokens for Array

Source§

impl ToTokens for Assignment

Source§

impl ToTokens for AssignmentExpr

Source§

impl ToTokens for BinaryAssignment

Source§

impl ToTokens for BinaryExpression

Source§

impl ToTokens for BinaryInstallation

Source§

impl ToTokens for BinaryOperator

Source§

impl ToTokens for BindingPack

Source§

impl ToTokens for BlockComment

Source§

impl ToTokens for BreakStatement

Source§

impl ToTokens for CatchStatement

Source§

impl ToTokens for CellBlock

Source§

impl ToTokens for CellStream

Source§

impl ToTokens for Collection

Source§

impl ToTokens for Component

Source§

impl ToTokens for ContinueStatement

Source§

impl ToTokens for DebugClause

Source§

impl ToTokens for DebugKeyword

Source§

impl ToTokens for ElseClause

Source§

impl ToTokens for Empty

Source§

impl ToTokens for EmptyComponent

Source§

impl ToTokens for EscapeSequence

Source§

impl ToTokens for EvaluatedAssignment

Source§

impl ToTokens for ExceptClause

Source§

impl ToTokens for Expr

Source§

impl ToTokens for ExpressionCell

Source§

impl ToTokens for FloatLiteral

Source§

impl ToTokens for ForLoop

Source§

impl ToTokens for Group

Source§

impl ToTokens for IdentToken

Source§

impl ToTokens for IfStatement

Source§

impl ToTokens for IntegerLiteral

Source§

impl ToTokens for IterationRange

Source§

impl ToTokens for LambdaExpression

Source§

impl ToTokens for LambdaParameters

Source§

impl ToTokens for LineComment

Source§

impl ToTokens for List

Source§

impl ToTokens for Literal

Source§

impl ToTokens for LocalAssignment

Source§

impl ToTokens for LocalStructuredBinding

Source§

impl ToTokens for LoopBody

Source§

impl ToTokens for MutedCell

Source§

impl ToTokens for MutedGroup

Source§

impl ToTokens for NakedSequence

Source§

impl ToTokens for NewStatement

Source§

impl ToTokens for OperatorExpr

Source§

impl ToTokens for OptionExpression

Source§

impl ToTokens for ParenthesizedExpression

Source§

impl ToTokens for ParsedFile

Source§

impl ToTokens for PostfixAssignment

Source§

impl ToTokens for PostfixExpression

Source§

impl ToTokens for PostfixInstallation

Source§

impl ToTokens for PostfixOperator

Source§

impl ToTokens for PrefixAssignment

Source§

impl ToTokens for PrefixExpression

Source§

impl ToTokens for PrefixInstallation

Source§

impl ToTokens for PrefixOperator

Source§

impl ToTokens for Punct

Source§

impl ToTokens for QuoteExpression

Source§

impl ToTokens for QuoteSpecifier

Source§

impl ToTokens for RawStringContent

Source§

impl ToTokens for RawStringElement

Source§

impl ToTokens for RawStringLiteral

Source§

impl ToTokens for ReturnStatement

Source§

impl ToTokens for Sequence

Source§

impl ToTokens for SequenceCell

Source§

impl ToTokens for SequenceElement

Source§

impl ToTokens for SourceFile

Source§

impl ToTokens for StringContent

Source§

impl ToTokens for StringElement

Source§

impl ToTokens for StringLiteral

Source§

impl ToTokens for StructuredBinding

Source§

impl ToTokens for Symbol

Source§

impl ToTokens for SyntaxNode

Source§

impl ToTokens for ThenClause

Source§

impl ToTokens for ThrowStatement

Source§

impl ToTokens for TokenStream

Source§

impl ToTokens for TokenTree

Source§

impl ToTokens for TrapStatement

Source§

impl ToTokens for Trivia

Source§

impl ToTokens for TryFallback

Source§

impl ToTokens for TryStatement

Source§

impl ToTokens for WhileLoop

Source§

impl ToTokens for _Add

Source§

impl ToTokens for _AddAdd

Source§

impl ToTokens for _AddAddEql

Source§

impl ToTokens for _AddEql

Source§

impl ToTokens for _Amp

Source§

impl ToTokens for _AmpEql

Source§

impl ToTokens for _And

Source§

impl ToTokens for _AngleBarDelimiter

Source§

impl ToTokens for _Att

Source§

impl ToTokens for _AttAtt

Source§

impl ToTokens for _AttAttEql

Source§

impl ToTokens for _AttAttQsm

Source§

impl ToTokens for _AttAttQsmEql

Source§

impl ToTokens for _AttEql

Source§

impl ToTokens for _Bng

Source§

impl ToTokens for _BngEql

Source§

impl ToTokens for _Box

Source§

impl ToTokens for _BoxEql

Source§

impl ToTokens for _BraceDelimiter

Source§

impl ToTokens for _BracketDelimiter

Source§

impl ToTokens for _BreakKeyword

Source§

impl ToTokens for _BreakpointKeyword

Source§

impl ToTokens for _Bsl

Source§

impl ToTokens for _BslBsl

Source§

impl ToTokens for _BslBslEql

Source§

impl ToTokens for _BslEql

Source§

impl ToTokens for _CatchKeyword

Source§

impl ToTokens for _Cdt

Source§

impl ToTokens for _CdtEql

Source§

impl ToTokens for _Cma

Source§

impl ToTokens for _Col

Source§

impl ToTokens for _ColEql

Source§

impl ToTokens for _ContinueKeyword

Source§

impl ToTokens for _Crt

Source§

impl ToTokens for _CrtBng

Source§

impl ToTokens for _CrtCrt

Source§

impl ToTokens for _CrtCrtEql

Source§

impl ToTokens for _CrtEql

Source§

impl ToTokens for _CrtGst

Source§

impl ToTokens for _CrtGstEql

Source§

impl ToTokens for _CrtLst

Source§

impl ToTokens for _CrtLstEql

Source§

impl ToTokens for _CrtMul

Source§

impl ToTokens for _CrtMulMul

Source§

impl ToTokens for _CrtMulMulEql

Source§

impl ToTokens for _CrtTld

Source§

impl ToTokens for _DoKeyword

Source§

impl ToTokens for _Dot

Source§

impl ToTokens for _DotDot

Source§

impl ToTokens for _DotDotEql

Source§

impl ToTokens for _DotDotLst

Source§

impl ToTokens for _DotDotLstEql

Source§

impl ToTokens for _DotQsm

Source§

impl ToTokens for _ElapsedTimeKeyword

Source§

impl ToTokens for _ElapsedTimingKeyword

Source§

impl ToTokens for _ElseKeyword

Source§

impl ToTokens for _EmptyDelimiter

Source§

impl ToTokens for _Eql

Source§

impl ToTokens for _EqlBngEql

Source§

impl ToTokens for _EqlEql

Source§

impl ToTokens for _EqlEqlEql

Source§

impl ToTokens for _EqlEqlEqlGst

Source§

impl ToTokens for _EqlEqlEqlGstEql

Source§

impl ToTokens for _EqlEqlGst

Source§

impl ToTokens for _EqlEqlGstEql

Source§

impl ToTokens for _EqlGst

Source§

impl ToTokens for _ExceptKeyword

Source§

impl ToTokens for _FinishKeyword

Source§

impl ToTokens for _ForKeyword

Source§

impl ToTokens for _FromKeyword

Source§

impl ToTokens for _GlobalKeyword

Source§

impl ToTokens for _Graded

Source§

impl ToTokens for _Gst

Source§

impl ToTokens for _GstEql

Source§

impl ToTokens for _GstGst

Source§

impl ToTokens for _GstGstEql

Source§

impl ToTokens for _Hsh

Source§

impl ToTokens for _HshQsm

Source§

impl ToTokens for _IfKeyword

Source§

impl ToTokens for _InKeyword

Source§

impl ToTokens for _ListKeyword

Source§

impl ToTokens for _LocalKeyword

Source§

impl ToTokens for _Lst

Source§

impl ToTokens for _LstEql

Source§

impl ToTokens for _LstEqlEql

Source§

impl ToTokens for _LstEqlEqlEql

Source§

impl ToTokens for _LstEqlEqlGst

Source§

impl ToTokens for _LstEqlEqlGstEql

Source§

impl ToTokens for _LstLst

Source§

impl ToTokens for _LstLstEql

Source§

impl ToTokens for _LstSub

Source§

impl ToTokens for _Mod

Source§

impl ToTokens for _ModEql

Source§

impl ToTokens for _Mul

Source§

impl ToTokens for _MulEql

Source§

impl ToTokens for _MulMul

Source§

impl ToTokens for _MulMulEql

Source§

impl ToTokens for _NewKeyword

Source§

impl ToTokens for _Not

Source§

impl ToTokens for _OfKeyword

Source§

impl ToTokens for _Or

Source§

impl ToTokens for _ParenthesisDelimiter

Source§

impl ToTokens for _Pip

Source§

impl ToTokens for _PipEql

Source§

impl ToTokens for _PipPip

Source§

impl ToTokens for _PipPipEql

Source§

impl ToTokens for _PipSub

Source§

impl ToTokens for _PipSubEql

Source§

impl ToTokens for _PipUbs

Source§

impl ToTokens for _PipUbsEql

Source§

impl ToTokens for _ProfileKeyword

Source§

impl ToTokens for _Qsm

Source§

impl ToTokens for _QsmQsm

Source§

impl ToTokens for _QsmQsmEql

Source§

impl ToTokens for _ReturnKeyword

Source§

impl ToTokens for _Scl

Source§

impl ToTokens for _SemicolonDelimiter

Source§

impl ToTokens for _Sfp

Source§

impl ToTokens for _SfpEql

Source§

impl ToTokens for _ShieldKeyword

Source§

impl ToTokens for _Slh

Source§

impl ToTokens for _SlhEql

Source§

impl ToTokens for _SlhSlh

Source§

impl ToTokens for _SlhSlhEql

Source§

impl ToTokens for _Space

Source§

impl ToTokens for _StepKeyword

Source§

impl ToTokens for _Sub

Source§

impl ToTokens for _SubEql

Source§

impl ToTokens for _SubGst

Source§

impl ToTokens for _SymbolKeyword

Source§

impl ToTokens for _TestKeyword

Source§

impl ToTokens for _ThenKeyword

Source§

impl ToTokens for _ThreadLocalKeyword

Source§

impl ToTokens for _ThreadVariableKeyword

Source§

impl ToTokens for _ThrowKeyword

Source§

impl ToTokens for _TimeKeyword

Source§

impl ToTokens for _TimingKeyword

Source§

impl ToTokens for _Tld

Source§

impl ToTokens for _TldEql

Source§

impl ToTokens for _ToKeyword

Source§

impl ToTokens for _TrapKeyword

Source§

impl ToTokens for _TryKeyword

Source§

impl ToTokens for _Ubs

Source§

impl ToTokens for _UbsBng

Source§

impl ToTokens for _UbsEql

Source§

impl ToTokens for _UbsGst

Source§

impl ToTokens for _UbsGstEql

Source§

impl ToTokens for _UbsLst

Source§

impl ToTokens for _UbsLstEql

Source§

impl ToTokens for _UbsMul

Source§

impl ToTokens for _UbsTld

Source§

impl ToTokens for _WhenKeyword

Source§

impl ToTokens for _WhileKeyword

Source§

impl ToTokens for _Xor

Source§

impl<S, D> ToTokens for Delimited<S, D>
where S: ToTokens, D: DelimiterToken,

Source§

impl<S: ToTokens, P: ToTokens> ToTokens for Pair<S, P>

Source§

impl<S: ToTokens> ToTokens for Body<S>

Source§

impl<S: ToTokens> ToTokens for Punctuated<S>

Source§

impl<S: ToTokens> ToTokens for Terminated<S>