Skip to main content

AssignmentToken

Struct AssignmentToken 

Source
pub struct AssignmentToken { /* private fields */ }
Expand description

A colon token

Methods from Deref<Target = SyntaxToken>§

Source

pub fn write_debug<R>( &self, resolver: &R, target: &mut impl Write, ) -> Result<(), Error>
where R: Resolver + ?Sized,

Writes this token’s Debug representation into the given target.

Source

pub fn debug<R>(&self, resolver: &R) -> String
where R: Resolver + ?Sized,

Returns this token’s Debug representation as a string.

To avoid allocating for every token, see write_debug.

Source

pub fn write_display<R>( &self, resolver: &R, target: &mut impl Write, ) -> Result<(), Error>
where R: Resolver + ?Sized,

Writes this token’s Display representation into the given target.

Source

pub fn display<R>(&self, resolver: &R) -> String
where R: Resolver + ?Sized,

Returns this token’s Display representation as a string.

To avoid allocating for every token, see write_display.

Source

pub fn resolver(&self) -> Option<&Arc<dyn Resolver>>

If there is a resolver associated with this tree, returns it.

Source

pub fn try_resolved(&self) -> Option<&ResolvedToken<S, D>>

Turns this token into a ResolvedToken, but only if there is a resolver associated with this tree.

Source

pub fn resolved(&self) -> &ResolvedToken<S, D>

Turns this token into a ResolvedToken.

§Panics

If there is no resolver associated with this tree.

Source

pub fn replace_with(&self, replacement: GreenToken) -> GreenNode

Returns a green tree, equal to the green tree this token belongs two, except with this token substitute. The complexity of operation is proportional to the depth of the tree

Source

pub fn syntax_kind(&self) -> RawSyntaxKind

The internal representation of the kind of this token.

Source

pub fn kind(&self) -> S

The kind of this token in terms of your language.

Source

pub fn text_range(&self) -> TextRange

The range this token covers in the source text, in bytes.

Source

pub fn resolve_text<'i, I>(&self, resolver: &'i I) -> &'i str
where I: Resolver + ?Sized,

Uses the provided resolver to return the source text of this token.

If no text is explicitly associated with the token, returns its static_text instead.

Source

pub fn static_text(&self) -> Option<&'static str>

If the syntax kind of this token always represents the same text, returns that text.

§Examples

If there is a syntax kind Plus that represents just the + operator and we implement Syntax::static_text for it, we can retrieve this text in the resulting syntax tree.

let mut builder: GreenNodeBuilder<MySyntax> = GreenNodeBuilder::new();
let tree = parse(&mut builder, "x + 3");
let plus = tree
    .children_with_tokens()
    .nth(2) // `x`, then a space, then `+`
    .unwrap()
    .into_token()
    .unwrap();
assert_eq!(plus.static_text(), Some("+"));
Source

pub fn text_eq(&self, other: &SyntaxToken<S, D>) -> bool

Returns true if self and other represent equal source text.

This method is different from the PartialEq and Eq implementations in that it compares only the token text and not its source position. It is more efficient than comparing the result of resolve_text because it compares the tokens’ interned text_keys (if their text is not static) or their kind (if it is). Therefore, it also does not require a Resolver.

Note that the result of the comparison may be wrong when comparing two tokens from different trees that use different interners.

§Examples
let mut builder: GreenNodeBuilder<MySyntax> = GreenNodeBuilder::new();
let tree = parse(&mut builder, "x + x + 3");
let mut tokens = tree.children_with_tokens();
let tokens = tokens.by_ref();
let first_x = tokens.next().unwrap().into_token().unwrap();

// For the other tokens, skip over the whitespace between them
let first_plus = tokens.skip(1).next().unwrap().into_token().unwrap();
let second_x = tokens.skip(1).next().unwrap().into_token().unwrap();
let second_plus = tokens.skip(1).next().unwrap().into_token().unwrap();
assert!(first_x.text_eq(&second_x));
assert!(first_plus.text_eq(&second_plus));
Source

pub fn text_key(&self) -> Option<TokenKey>

Returns the interned key of text covered by this token, if any. This key may be used for comparisons with other keys of strings interned by the same interner.

See also resolve_text and text_eq.

§Examples

If you intern strings inside of your application, like inside a compiler, you can use token’s text keys to cross-reference between the syntax tree and the rest of your implementation by re-using the interner in both.

use cstree::interning::{new_interner, TokenInterner, TokenKey};
struct TypeTable {
    // ...
}
impl TypeTable {
    fn type_of(&self, ident: TokenKey) -> &str {
        // ...
    }
}
let interner = new_interner();
let mut state = State {
    interner,
    type_table: TypeTable{ /* stuff */},
};
let mut builder: GreenNodeBuilder<MySyntax, TokenInterner> =
    GreenNodeBuilder::with_interner(&mut state.interner);
let tree = parse(&mut builder, "x");
let type_table = &state.type_table;
let ident = tree
    .children_with_tokens()
    .next()
    .unwrap()
    .into_token()
    .unwrap();
let typ = type_table.type_of(ident.text_key().unwrap());
Source

pub fn green(&self) -> &GreenToken

Returns the unterlying green tree token of this token.

Source

pub fn parent(&self) -> &SyntaxNode<S, D>

The parent node of this token.

Source

pub fn ancestors(&self) -> impl Iterator<Item = &SyntaxNode<S, D>>

Returns an iterator along the chain of parents of this token.

Source

pub fn next_sibling_or_token( &self, ) -> Option<NodeOrToken<&SyntaxNode<S, D>, &SyntaxToken<S, D>>>

The tree element to the right of this one, i.e. the next child of this token’s parent after this token.

Source

pub fn prev_sibling_or_token( &self, ) -> Option<NodeOrToken<&SyntaxNode<S, D>, &SyntaxToken<S, D>>>

The tree element to the left of this one, i.e. the previous child of this token’s parent after this token.

Source

pub fn siblings_with_tokens( &self, direction: Direction, ) -> impl Iterator<Item = NodeOrToken<&SyntaxNode<S, D>, &SyntaxToken<S, D>>>

Returns an iterator over all siblings of this token in the given direction, i.e. all of this token’s parent’s children from this token on to the left or the right. The first item in the iterator will always be this token.

Source

pub fn next_token(&self) -> Option<&SyntaxToken<S, D>>

Returns the next token in the tree. This is not necessary a direct sibling of this token, but will always be further right in the tree.

Source

pub fn prev_token(&self) -> Option<&SyntaxToken<S, D>>

Returns the previous token in the tree. This is not necessary a direct sibling of this token, but will always be further left in the tree.

Trait Implementations§

Source§

impl CstToken for AssignmentToken

Source§

fn can_cast(kind: SyntaxKind) -> bool

Returns true if the given syntax kind can be cast to this token type
Source§

fn token(&self) -> &SyntaxToken

Returns a reference to the underlying syntax token
Source§

fn cast(token: SyntaxToken) -> Option<Self>

Attempts to cast a raw syntax token to this typed token Read more
Source§

impl Deref for AssignmentToken

Source§

type Target = SyntaxToken<SyntaxKind>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.

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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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
Source§

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

Source§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
Source§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
Source§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling Attribute value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
Source§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi Quirk value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
Source§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
Source§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1:

renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the Condition value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
Source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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.