#[repr(C)]
pub struct XHeredoc { pub parts: Vec<Node>, pub heredoc_body_l: Loc, pub heredoc_end_l: Loc, pub expression_l: Loc, }
Expand description

Represents a executable here-document literal (both with and without interpolation)

It’s similar to Xstr in terms of abstract syntax tree, but has different source maps.

Fields§

§parts: Vec<Node>

A list of string parts (static literals and interpolated expressions)

§heredoc_body_l: Loc

Location of the executable here-document body

<<-`HERE`\n  a\n   #{42}\nHERE
         ~~~~~~~~~~~~~~~
§heredoc_end_l: Loc

Location of the executable here-document end

<<-`HERE`\n  a\n   #{42}\nHERE
                          ~~~~
§expression_l: Loc

Location of the executable here-document identifier

<<-`HERE`\n  a\n   #{42}\nHERE
~~~~~~~

Note: This is the only node (with Heredoc) that has expression_l smaller that all other sub-locations merged. The reason for that is that it’s possible to add more code after here-document ID:

<<-`HERE` + "rest"
content
HERE

Trait Implementations§

source§

impl Clone for XHeredoc

source§

fn clone(&self) -> XHeredoc

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for XHeredoc

source§

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

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

impl PartialEq for XHeredoc

source§

fn eq(&self, other: &XHeredoc) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for XHeredoc

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<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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.