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
use std::rc::Rc; /// A string that cannot be changed. #[derive(Clone, Debug, PartialEq)] pub struct ImmutableString { inner: Rc<String>, } impl ImmutableString { pub fn as_ref(&self) -> &str { &self.inner } pub(super) fn new(text: String) -> ImmutableString { ImmutableString { inner: Rc::new(text), } } #[cfg(test)] pub(super) fn from(text: &str) -> ImmutableString { ImmutableString { inner: Rc::new(String::from(text)), } } }