use std::sync::Arc;
#[derive(Clone)]
pub struct SourceFile {
pub name: Arc<str>,
pub text: Arc<String>,
}
impl SourceFile {
pub fn new(name: impl Into<Arc<str>>, text: impl Into<Arc<String>>) -> Self {
Self {
name: name.into(),
text: text.into(),
}
}
}
#[cfg(test)]
mod tests {
use super::SourceFile;
#[test]
fn source_file_basic() {
let name = "main.rl";
let text = "println(\"foobar\")";
let source_file = SourceFile::new(name, text.to_string());
assert_eq!(&*source_file.name, name);
assert_eq!(&*source_file.text, text);
}
}