Encode/decode Names as strings
This commit is contained in:
parent
0c05492ee1
commit
885d224230
1 changed files with 13 additions and 2 deletions
|
@ -151,8 +151,7 @@ pub const ILLEGAL_CTXT : SyntaxContext = 1;
|
|||
|
||||
/// A name is a part of an identifier, representing a string or gensym. It's
|
||||
/// the result of interning.
|
||||
#[derive(Eq, Ord, PartialEq, PartialOrd, Hash,
|
||||
RustcEncodable, RustcDecodable, Clone, Copy)]
|
||||
#[derive(Eq, Ord, PartialEq, PartialOrd, Hash, Clone, Copy)]
|
||||
pub struct Name(pub u32);
|
||||
|
||||
impl<T: AsRef<str>> PartialEq<T> for Name {
|
||||
|
@ -179,6 +178,18 @@ impl Name {
|
|||
/// A mark represents a unique id associated with a macro expansion
|
||||
pub type Mrk = u32;
|
||||
|
||||
impl Encodable for Name {
|
||||
fn encode<S: Encoder>(&self, s: &mut S) -> Result<(), S::Error> {
|
||||
s.emit_str(&self.as_str())
|
||||
}
|
||||
}
|
||||
|
||||
impl Decodable for Name {
|
||||
fn decode<D: Decoder>(d: &mut D) -> Result<Name, D::Error> {
|
||||
Ok(token::intern(&try!(d.read_str())[..]))
|
||||
}
|
||||
}
|
||||
|
||||
impl Encodable for Ident {
|
||||
fn encode<S: Encoder>(&self, s: &mut S) -> Result<(), S::Error> {
|
||||
s.emit_str(&self.name.as_str())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue