Migrate over to cargo

This commit is contained in:
Erick Tryzelaar committed 2014-07-18 06:17:47 -07:00
1 parent 618e8d7b5a
commit 4077d83cf2
14 files changed
+246 -3

No files matched your search

+1
View File
@@ -0,0 +1 @@
/target/
+11
View File
@@ -0,0 +1,11 @@
[package]
name = "serde"
version = "0.1.0"
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>"]
[[lib]]
name = "serde"
path = "src/lib.rs"
[dependencies.serde_macros]
path = "serde_macros/"
+9
View File
@@ -0,0 +1,9 @@
[package]
name = "serde_macros"
version = "0.1.0"
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>"]
[[lib]]
name = "serde_macros"
path = "src/lib.rs"
plugin = true
+2 -3
View File
@@ -1,5 +1,6 @@
#![crate_name = "serde_macros"]
#![crate_type = "dylib"]
#![crate_type = "rlib"]
#![license = "MIT/ASL2"]
#![feature(plugin_registrar)]
@@ -114,7 +115,6 @@ fn expand_deriving_serializable(cx: &mut ExtCtxt,
)
),
attributes: attrs,
const_nonmatching: true,
combine_substructure: combine_substructure(|a, b, c| {
serializable_substructure(a, b, c)
}),
@@ -291,7 +291,6 @@ pub fn expand_deriving_deserializable(cx: &mut ExtCtxt,
)
),
attributes: Vec::new(),
const_nonmatching: true,
combine_substructure: combine_substructure(|a, b, c| {
deserializable_substructure(a, b, c)
}),
+223
View File
@@ -0,0 +1,223 @@
use test::Bencher;
use serialize::Decodable;
use de::{Deserializable};
//////////////////////////////////////////////////////////////////////////////
#[deriving(Show)]
enum Error {
EndOfStream,
SyntaxError,
}
//////////////////////////////////////////////////////////////////////////////
mod decoder {
use std::vec;
use serialize::Decoder;
use super::{Error, EndOfStream, SyntaxError};
pub struct BytesDecoder {
iter: vec::MoveItems<u8>,
}
impl BytesDecoder {
#[inline]
pub fn new(values: Vec<u8>) -> BytesDecoder {
BytesDecoder {
iter: values.move_iter()
}
}
}
impl Decoder<Error> for BytesDecoder {
// Primitive types:
fn read_nil(&mut self) -> Result<(), Error> { Err(SyntaxError) }
fn read_uint(&mut self) -> Result<uint, Error> { Err(SyntaxError) }
fn read_u64(&mut self) -> Result<u64, Error> { Err(SyntaxError) }
fn read_u32(&mut self) -> Result<u32, Error> { Err(SyntaxError) }
fn read_u16(&mut self) -> Result<u16, Error> { Err(SyntaxError) }
#[inline]
fn read_u8(&mut self) -> Result<u8, Error> {
match self.iter.next() {
Some(value) => Ok(value),
None => Err(EndOfStream),
}
}
fn read_int(&mut self) -> Result<int, Error> { Err(SyntaxError) }
fn read_i64(&mut self) -> Result<i64, Error> { Err(SyntaxError) }
fn read_i32(&mut self) -> Result<i32, Error> { Err(SyntaxError) }
fn read_i16(&mut self) -> Result<i16, Error> { Err(SyntaxError) }
fn read_i8(&mut self) -> Result<i8, Error> { Err(SyntaxError) }
fn read_bool(&mut self) -> Result<bool, Error> { Err(SyntaxError) }
fn read_f64(&mut self) -> Result<f64, Error> { Err(SyntaxError) }
fn read_f32(&mut self) -> Result<f32, Error> { Err(SyntaxError) }
fn read_char(&mut self) -> Result<char, Error> { Err(SyntaxError) }
fn read_str(&mut self) -> Result<String, Error> { Err(SyntaxError) }
// Compound types:
fn read_enum<T>(&mut self, _name: &str, _f: |&mut BytesDecoder| -> Result<T, Error>) -> Result<T, Error> { Err(SyntaxError) }
fn read_enum_variant<T>(&mut self,
_names: &[&str],
_f: |&mut BytesDecoder, uint| -> Result<T, Error>)
-> Result<T, Error> { Err(SyntaxError) }
fn read_enum_variant_arg<T>(&mut self,
_a_idx: uint,
_f: |&mut BytesDecoder| -> Result<T, Error>)
-> Result<T, Error> { Err(SyntaxError) }
fn read_enum_struct_variant<T>(&mut self,
_names: &[&str],
_f: |&mut BytesDecoder, uint| -> Result<T, Error>)
-> Result<T, Error> { Err(SyntaxError) }
fn read_enum_struct_variant_field<T>(&mut self,
_f_name: &str,
_f_idx: uint,
_f: |&mut BytesDecoder| -> Result<T, Error>)
-> Result<T, Error> { Err(SyntaxError) }
fn read_struct<T>(&mut self, _s_name: &str, _len: uint, _f: |&mut BytesDecoder| -> Result<T, Error>)
-> Result<T, Error> { Err(SyntaxError) }
fn read_struct_field<T>(&mut self,
_f_name: &str,
_f_idx: uint,
_f: |&mut BytesDecoder| -> Result<T, Error>)
-> Result<T, Error> { Err(SyntaxError) }
fn read_tuple<T>(&mut self, _f: |&mut BytesDecoder, uint| -> Result<T, Error>) -> Result<T, Error> { Err(SyntaxError) }
fn read_tuple_arg<T>(&mut self, _a_idx: uint, _f: |&mut BytesDecoder| -> Result<T, Error>) -> Result<T, Error> { Err(SyntaxError) }
fn read_tuple_struct<T>(&mut self,
_s_name: &str,
_f: |&mut BytesDecoder, uint| -> Result<T, Error>)
-> Result<T, Error> { Err(SyntaxError) }
fn read_tuple_struct_arg<T>(&mut self,
_a_idx: uint,
_f: |&mut BytesDecoder| -> Result<T, Error>)
-> Result<T, Error> { Err(SyntaxError) }
// Specialized types:
fn read_option<T>(&mut self, _f: |&mut BytesDecoder, bool| -> Result<T, Error>) -> Result<T, Error> { Err(SyntaxError) }
#[inline]
fn read_seq<T>(&mut self, f: |&mut BytesDecoder, uint| -> Result<T, Error>) -> Result<T, Error> {
f(self, 3)
}
#[inline]
fn read_seq_elt<T>(&mut self, _idx: uint, f: |&mut BytesDecoder| -> Result<T, Error>) -> Result<T, Error> {
f(self)
}
fn read_map<T>(&mut self, _f: |&mut BytesDecoder, uint| -> Result<T, Error>) -> Result<T, Error> { Err(SyntaxError) }
fn read_map_elt_key<T>(&mut self, _idx: uint, _f: |&mut BytesDecoder| -> Result<T, Error>) -> Result<T, Error> { Err(SyntaxError) }
fn read_map_elt_val<T>(&mut self, _idx: uint, _f: |&mut BytesDecoder| -> Result<T, Error>) -> Result<T, Error> { Err(SyntaxError) }
}
}
//////////////////////////////////////////////////////////////////////////////
mod deserializer {
use std::num;
use std::vec;
use super::{Error, EndOfStream, SyntaxError};
use de::Deserializer;
use de::{Token, Int, SeqStart, Sep, End};
#[deriving(Eq, Show)]
enum State {
StartState,
SepOrEndState,
EndState,
}
pub struct BytesDeserializer {
state: State,
len: uint,
iter: vec::MoveItems<u8>,
}
impl BytesDeserializer {
#[inline]
pub fn new(values: Vec<int>) -> BytesDeserializer {
BytesDeserializer {
state: StartState,
len: values.len(),
iter: values.move_iter(),
}
}
}
impl Iterator<Result<Token, Error>> for BytesDeserializer {
#[inline]
fn next(&mut self) -> Option<Result<Token, Error>> {
match self.state {
StartState => {
self.state = SepOrEndState;
Some(Ok(SeqStart(self.len)))
}
SepOrEndState => {
match self.iter.next() {
Some(value) => {
Some(Ok(Int(value)))
}
None => {
self.state = EndState;
Some(Ok(End))
}
}
}
EndState => {
None
}
}
}
}
impl Deserializer<Error> for BytesDeserializer {
#[inline]
fn end_of_stream_error<T>(&self) -> Result<T, Error> {
Err(EndOfStream)
}
#[inline]
fn syntax_error<T>(&self) -> Result<T, Error> {
Err(SyntaxError)
}
}
}
//////////////////////////////////////////////////////////////////////////////
fn run_bench_decoder(bytes: Vec<u8>) {
let mut d = decoder::BytesDecoder::new(bytes.clone());
let value: Vec<u8> = Decodable::decode(&mut d).unwrap();
assert_eq!(value, bytes);
}
fn run_bench_deserializer(bytes: Vec<u8>) {
let mut d = deserializer::BytesDeserializer::new(bytes.clone());
let value: Vec<u8> = Deserializable::deserialize(&mut d).unwrap();
assert_eq!(value, bytes);
}
#[bench]
fn bench_bytes_decoder_empty(b: &mut Bencher) {
b.iter(|| {
run_bench_decoder(vec!())
})
}
#[bench]
fn bench_bytes_deserializer_empty(b: &mut Bencher) {
b.iter(|| {
run_bench_deserializer(vec!())
})
}
View File
File renamed without changes.
View File
File renamed without changes.
View File
File renamed without changes.
File renamed without changes.
View File
File renamed without changes.
View File
File renamed without changes.
View File
File renamed without changes.
View File
File renamed without changes.
View File
File renamed without changes.