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§
sourcefn extend_if_literal<T: Extend<char>>(&self, result: T) -> Result<T, T>
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§
sourcefn to_string_if_literal(&self) -> Option<String>
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.