Sebastian Thiel`just fmt`ffc12763 years agoHistory
53 lines · 1.5 KB · Rust
RawDownload
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())            }        }    }}