genco/tokens/static_literal.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
use crate::lang::Lang;
use crate::tokens::{FormatInto, Item, ItemStr};
/// A formatter from a static literal.
///
/// Created from the [static_literal()] function.
#[derive(Debug, Clone, Copy)]
pub struct StaticLiteral {
literal: &'static str,
}
impl<L> FormatInto<L> for StaticLiteral
where
L: Lang,
{
fn format_into(self, tokens: &mut crate::Tokens<L>) {
tokens.item(Item::Literal(ItemStr::Static(self.literal)));
}
}
/// A formatter from a static literal.
///
/// This is typically more efficient than using [append()] with a string
/// directly, since it can avoid copying the string.
///
/// # Examples
///
/// ```
/// use genco::prelude::*;
/// use genco::tokens;
///
/// let mut tokens = Tokens::<()>::new();
/// tokens.append(tokens::static_literal("hello"));
/// # Ok::<_, genco::fmt::Error>(())
/// ```
///
/// [append()]: crate::Tokens::append()
pub fn static_literal(literal: &'static str) -> StaticLiteral {
StaticLiteral { literal }
}