rust-nix/src/parser/common.rs

42 lines
759 B
Rust

use super::source::Span;
#[derive(Clone, Debug)]
pub enum Number {
Integer(i64),
Float(f64),
}
#[derive(Clone)]
pub struct SpannedData<T> {
pub data: T,
pub span: Span,
}
impl<T> std::fmt::Debug for SpannedData<T>
where
T: std::fmt::Debug,
{
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
self.data.fmt(f)
}
}
type InnerIdentifier = internment::ArcIntern<String>;
#[derive(Clone)]
pub struct Identifier(InnerIdentifier);
impl Identifier {
pub fn from_ref(identifier: &str) -> Self {
Self(InnerIdentifier::from_ref(identifier))
}
}
impl std::fmt::Debug for Identifier {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str("`")?;
f.write_str(self.0.as_str())?;
f.write_str("`")
}
}