Struct macro_tools::exposed::Equation

source ·
pub struct Equation {
    pub left: Path,
    pub op: Eq,
    pub right: TokenStream,
}
Expand description

Represents an equation parsed from a procedural macro input.

This struct models an equation consisting of a left-hand side, an operator, and a right-hand side. The Equation is typically constructed during the parsing process of macro input, where the left and op fields are expected to be syntactically represented by syn::Path and syn::BinOp respectively, indicating the variable and operation involved. The right field is a proc_macro2::TokenStream, which can represent more complex expressions including, but not limited to, literals, function calls, or further operations.

§Fields

  • left: The left-hand side of the equation, represented as a path. This could be a variable or a more complex path in the code being processed by the macro.

  • op: The binary operator used in the equation, such as addition, subtraction, multiplication, etc.

  • right: The right-hand side of the equation. Given the potential complexity of expressions on this side, it is represented as a proc_macro2::TokenStream to accommodate any valid Rust expression.

§Examples

Parsing an equation from macro input:

use macro_tools::equation;
let got : equation::Equation = syn::parse_quote!( default = 31 );
macro_tools::tree_print!( got );
assert_eq!( macro_tools::code_to_str!( got ), "default = 31".to_string() );

Fields§

§left: Path

The LHS of the equation, represented by a syntactic path.

§op: Eq

Equality token.

§right: TokenStream

The RHS of the equation, capable of holding complex expressions.

Trait Implementations§

source§

impl Debug for Equation

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Parse for Equation

source§

fn parse(input: ParseStream<'_>) -> Result<Self>

source§

impl ToTokens for Equation

source§

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

Write self to the given TokenStream. Read more
source§

fn to_token_stream(&self) -> TokenStream

Convert self directly into a TokenStream object. Read more
source§

fn into_token_stream(self) -> TokenStream
where Self: Sized,

Convert self directly into a TokenStream object. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<S> AssignWithType for S

source§

fn assign_with_type<T, IntoT>(&mut self, component: IntoT)
where IntoT: Into<T>, S: Assign<T, IntoT>,

Sets the value of a component by its type. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Spanned for T
where T: Spanned + ?Sized,

source§

fn span(&self) -> Span

Returns a Span covering the complete contents of this syntax tree node, or Span::call_site() if this node is empty.
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.