-// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
//! Support code for encoding and decoding types.
/*
use std::borrow::Cow;
use std::intrinsics;
+use std::marker::PhantomData;
use std::path;
use std::rc::Rc;
use std::cell::{Cell, RefCell};
}
}
+impl<T> Encodable for PhantomData<T> {
+ fn encode<S: Encoder>(&self, s: &mut S) -> Result<(), S::Error> {
+ s.emit_unit()
+ }
+}
+
+impl<T> Decodable for PhantomData<T> {
+ fn decode<D: Decoder>(d: &mut D) -> Result<PhantomData<T>, D::Error> {
+ d.read_nil()?;
+ Ok(PhantomData)
+ }
+}
+
impl<'a, T: ?Sized + Encodable> Encodable for &'a T {
fn encode<S: Encoder>(&self, s: &mut S) -> Result<(), S::Error> {
(**self).encode(s)