use std::fmt::Write; use bstr::ByteSlice; use crate::{Assignment, AssignmentRef, NameRef, StateRef}; impl<'a> AssignmentRef<'a> { pub(crate) fn new(name: NameRef<'a>, state: StateRef<'a>) -> AssignmentRef<'a> { AssignmentRef { name, state } } /// Turn this reference into its owned counterpart. pub fn to_owned(self) -> Assignment { self.into() }} impl<'a> From<AssignmentRef<'a>> for Assignment { fn from(a: AssignmentRef<'a>) -> Self { Assignment { name: a.name.to_owned(), state: a.state.to_owned(), } }} impl<'a> Assignment { /// Provide a ref type to this owned instance. pub fn as_ref(&'a self) -> AssignmentRef<'a> { AssignmentRef::new(self.name.as_ref(), self.state.as_ref()) }} impl std::fmt::Display for AssignmentRef<'_> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self.state { StateRef::Set => f.write_str(self.name.as_str()), StateRef::Unset => { f.write_char('-')?; f.write_str(self.name.as_str()) } StateRef::Value(v) => { f.write_str(self.name.as_str())?; f.write_char('=')?; f.write_str(v.as_bstr().to_str_lossy().as_ref()) } StateRef::Unspecified => { f.write_char('!')?; f.write_str(self.name.as_str()) } } }}
use std::fmt::Write;
use bstr::ByteSlice;
use crate::{Assignment, AssignmentRef, NameRef, StateRef};
impl<'a> AssignmentRef<'a> {
pub(crate) fn new(name: NameRef<'a>, state: StateRef<'a>) -> AssignmentRef<'a> {
AssignmentRef { name, state }
}
/// Turn this reference into its owned counterpart.
pub fn to_owned(self) -> Assignment {
self.into()
}
}
impl<'a> From<AssignmentRef<'a>> for Assignment {
fn from(a: AssignmentRef<'a>) -> Self {
Assignment {
name: a.name.to_owned(),
state: a.state.to_owned(),
}
}
}
impl<'a> Assignment {
/// Provide a ref type to this owned instance.
pub fn as_ref(&'a self) -> AssignmentRef<'a> {
AssignmentRef::new(self.name.as_ref(), self.state.as_ref())
}
}
impl std::fmt::Display for AssignmentRef<'_> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self.state {
StateRef::Set => f.write_str(self.name.as_str()),
StateRef::Unset => {
f.write_char('-')?;
f.write_str(self.name.as_str())
}
StateRef::Value(v) => {
f.write_str(self.name.as_str())?;
f.write_char('=')?;
f.write_str(v.as_bstr().to_str_lossy().as_ref())
}
StateRef::Unspecified => {
f.write_char('!')?;
f.write_str(self.name.as_str())
}
}
}
}