/* 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> Encodable for Atom { fn encode(&self, _s: &mut S) -> Result<(), E> { Ok(()) } }