Trait yash_syntax::syntax::MaybeLiteral

source ·
pub trait MaybeLiteral {
    // Required method
    fn extend_if_literal<T: Extend<char>>(&self, result: T) -> Result<T, T>;

    // Provided method
    fn to_string_if_literal(&self) -> Option<String> { ... }
}
Expand description

Possibly literal syntax element.

A syntax element is literal if it is not quoted and does not contain any expansions. Such an element can be expanded to a string independently of the shell execution environment.

let text = Text(vec![Literal('f'), Literal('o'), Literal('o')]);
let expanded = text.to_string_if_literal().unwrap();
assert_eq!(expanded, "foo");
let backslashed = Text(vec![Backslashed('a')]);
assert_eq!(backslashed.to_string_if_literal(), None);

Required Methods§

source

fn extend_if_literal<T: Extend<char>>(&self, result: T) -> Result<T, T>

Checks if self is literal and, if so, converts to a string and appends it to result.

If self is literal, self converted to a string is appended to result and Ok(result) is returned. Otherwise, result is not modified and Err(result) is returned.

Provided Methods§

source

fn to_string_if_literal(&self) -> Option<String>

Checks if self is literal and, if so, converts to a string.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<T: MaybeLiteral> MaybeLiteral for [T]

source§

fn extend_if_literal<R: Extend<char>>(&self, result: R) -> Result<R, R>

Implementors§