servo/components/util/atom.rs

43 lines
1.1 KiB
Rust

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
//! Provides a wrapper around the Atom type in the string cache
//! crate. It's needed so that it can implement the Encodable
//! trait which is required by Servo.
use serialize::{Encoder, Encodable};
use std::fmt;
use std::hash::Hash;
use string_cache::atom;
#[deriving(Clone, Eq, Hash, PartialEq)]
pub struct Atom {
atom: atom::Atom,
}
impl Atom {
#[inline(always)]
pub fn from_slice(slice: &str) -> Atom {
Atom {
atom: atom::Atom::from_slice(slice)
}
}
#[inline(always)]
pub fn as_slice<'t>(&'t self) -> &'t str {
self.atom.as_slice()
}
}
impl fmt::Show for Atom {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{:s}", self.atom.as_slice())
}
}
impl<E, S: Encoder<E>> Encodable<S, E> for Atom {
fn encode(&self, _s: &mut S) -> Result<(), E> {
Ok(())
}
}