Skip to content

Commit

Permalink
rustup
Browse files Browse the repository at this point in the history
  • Loading branch information
BurntSushi committed Mar 1, 2015
1 parent 0f092b8 commit 173f327
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 56 deletions.
2 changes: 1 addition & 1 deletion src/bench.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use std::fmt::{Debug, Display};
use std::old_io as io;
use std::old_io::ByRefReader;
use std::old_io::Reader as IoReader;
use stdtest::Bencher;
use test::Bencher;

use Reader;

Expand Down
19 changes: 3 additions & 16 deletions src/bytestr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -164,13 +164,6 @@ impl fmt::Debug for ByteString {
}
}

impl AsSlice<u8> for ByteString {
#[inline]
fn as_slice<'a>(&'a self) -> &'a [u8] {
self.as_bytes()
}
}

impl ops::Deref for ByteString {
type Target = [u8];

Expand Down Expand Up @@ -222,13 +215,13 @@ impl hash::Hash for ByteString {
// TODO: Try `(&*self)` again (maybe when 1.0 hits). If the regression
// remains, create a smaller reproducible example and report it as a
// bug.
self.0.as_slice().hash(state);
self.0.hash(state);
}
}

impl<S: Str> PartialEq<S> for ByteString {
impl<S> PartialEq<S> for ByteString where S: ops::Deref<Target=str> {
fn eq(&self, other: &S) -> bool {
self.as_bytes() == other.as_slice().as_bytes()
self.as_bytes() == other.as_bytes()
}
}

Expand All @@ -241,9 +234,3 @@ impl FromIterator<u8> for ByteString {
impl Borrow<[u8]> for ByteString {
fn borrow(&self) -> &[u8] { &*self.0 }
}

// impl<'a> IntoCow<'a, [u8]> for ByteString {
// fn into_cow(self) -> Cow<'a, [u8]> {
// Cow::Owned(self)
// }
// }
6 changes: 3 additions & 3 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -179,10 +179,10 @@
#![deny(missing_docs)]
#![allow(unused_features)] // some are used in `test` but not in library

#![feature(collections, core, hash, old_io, old_path, std_misc, test, unicode)]
#![feature(collections, core, old_io, old_path, std_misc, test, unicode)]

#[cfg(test)]
extern crate "test" as stdtest;
extern crate test;
extern crate "rustc-serialize" as rustc_serialize;

use std::error::Error as StdError;
Expand Down Expand Up @@ -212,7 +212,7 @@ mod writer;
#[cfg(test)]
mod bench;
#[cfg(test)]
mod test;
mod tests;

/// A convenience type for representing the result of most CSV reader/writer
/// operations.
Expand Down
4 changes: 2 additions & 2 deletions src/reader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ impl<R: io::Reader> Reader<R> {
/// let rows = rdr.records().collect::<Result<Vec<_>, _>>().unwrap();
/// let headers2 = rdr.headers().unwrap();
///
/// let s = |&: s: &'static str| s.to_string();
/// let s = |s: &'static str| s.to_string();
/// assert_eq!(headers1, headers2);
/// assert_eq!(headers1, vec![s("a"), s("b"), s("c")]);
/// assert_eq!(rows.len(), 1);
Expand All @@ -348,7 +348,7 @@ impl<R: io::Reader> Reader<R> {
/// let rows = rdr.records().collect::<Result<Vec<_>, _>>().unwrap();
/// let headers2 = rdr.headers().unwrap();
///
/// let s = |&: s: &'static str| s.to_string();
/// let s = |s: &'static str| s.to_string();
/// assert_eq!(headers1, headers2);
/// assert_eq!(headers1, vec![s("a"), s("b"), s("c")]);
///
Expand Down
62 changes: 31 additions & 31 deletions src/test.rs → src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ fn assert_svec_eq<S: Str, T: Str>(got: Vec<Vec<S>>, expected: Vec<Vec<T>>) {

macro_rules! parses_to {
($name:ident, $csv:expr, $vec:expr) => (
parses_to!($name, $csv, $vec, |&: rdr| rdr);
parses_to!($name, $csv, $vec, |rdr| rdr);
);
($name:ident, $csv:expr, $vec:expr, $config:expr) => (
#[test]
Expand All @@ -47,7 +47,7 @@ macro_rules! parses_to {

macro_rules! fail_parses_to {
($name:ident, $csv:expr, $vec:expr) => (
fail_parses_to!($name, $csv, $vec, |&: rdr| rdr);
fail_parses_to!($name, $csv, $vec, |rdr| rdr);
);
($name:ident, $csv:expr, $vec:expr, $config:expr) => (
#[test]
Expand Down Expand Up @@ -82,7 +82,7 @@ macro_rules! decodes_to {

macro_rules! writes_as {
($name:ident, $vec:expr, $csv:expr) => (
writes_as!($name, $vec, $csv, |&: wtr| wtr);
writes_as!($name, $vec, $csv, |wtr| wtr);
);
($name:ident, $vec:expr, $csv:expr, $config:expr) => (
#[test]
Expand All @@ -98,7 +98,7 @@ macro_rules! writes_as {

macro_rules! fail_writes_as {
($name:ident, $vec:expr, $csv:expr) => (
fail_writes_as!($name, $vec, $csv, |&: wtr| wtr);
fail_writes_as!($name, $vec, $csv, |wtr| wtr);
);
($name:ident, $vec:expr, $csv:expr, $config:expr) => (
#[test]
Expand Down Expand Up @@ -172,7 +172,7 @@ parses_to!(trailing_lines_no_record_crlf,
vec![vec!["a", "b", "c"], vec!["x", "y", "z"]]);
parses_to!(empty_string_no_headers, "", vec![]);
parses_to!(empty_string_headers, "", vec![],
|&: rdr: Reader<_>| rdr.has_headers(true));
|rdr: Reader<_>| rdr.has_headers(true));
parses_to!(empty_lines, "\n\n\n\n", vec![]);
parses_to!(empty_lines_interspersed, "\n\na,b\n\n\nx,y\n\n\nm,n\n",
vec![vec!["a", "b"], vec!["x", "y"], vec!["m", "n"]]);
Expand All @@ -189,11 +189,11 @@ parses_to!(empty_lines_interspersed_cr, "\r\ra,b\r\r\rx,y\r\r\rm,n\r",
vec![vec!["a", "b"], vec!["x", "y"], vec!["m", "n"]]);

parses_to!(term_weird, "zza,bzc,dzz", vec![vec!["a", "b"], vec!["c", "d"]],
|&: rdr: Reader<_>| rdr.record_terminator(RecordTerminator::Any(b'z')));
|rdr: Reader<_>| rdr.record_terminator(RecordTerminator::Any(b'z')));

parses_to!(ascii_delimited, "a\x1fb\x1ec\x1fd",
vec![vec!["a", "b"], vec!["c", "d"]],
|&: rdr: Reader<_>| {
|rdr: Reader<_>| {
rdr.delimiter(b'\x1f')
.record_terminator(RecordTerminator::Any(b'\x1e'))
});
Expand All @@ -205,33 +205,33 @@ parses_to!(quote_inner_space, "\" a \"", vec![vec![" a "]]);
parses_to!(quote_outer_space, " \"a\" ", vec![vec![" \"a\" "]]);

parses_to!(quote_change, "zaz", vec![vec!["a"]],
|&: rdr: Reader<_>| rdr.quote(Some(b'z')));
|rdr: Reader<_>| rdr.quote(Some(b'z')));

// This one is pretty hokey. I don't really know what the "right" behavior is.
parses_to!(quote_delimiter, ",a,,b", vec![vec!["a,b"]],
|&: rdr: Reader<_>| rdr.quote(Some(b',')));
|rdr: Reader<_>| rdr.quote(Some(b',')));

// Another hokey one...
parses_to!(quote_no_escapes, r#""a\"b""#, vec![vec![r#"a\b""#]]);
parses_to!(quote_escapes_no_double, r#""a""b""#, vec![vec![r#"a"b""#]],
|&: rdr: Reader<_>| rdr.double_quote(false));
|rdr: Reader<_>| rdr.double_quote(false));
parses_to!(quote_escapes, r#""a\"b""#, vec![vec![r#"a"b"#]],
|&: rdr: Reader<_>| rdr.double_quote(false));
|rdr: Reader<_>| rdr.double_quote(false));
parses_to!(quote_escapes_change, r#""az"b""#, vec![vec![r#"a"b"#]],
|&: rdr: Reader<_>| rdr.double_quote(false).escape(b'z'));
|rdr: Reader<_>| rdr.double_quote(false).escape(b'z'));

parses_to!(delimiter_tabs, "a\tb", vec![vec!["a", "b"]],
|&: rdr: Reader<_>| rdr.delimiter(b'\t'));
|rdr: Reader<_>| rdr.delimiter(b'\t'));
parses_to!(delimiter_weird, "azb", vec![vec!["a", "b"]],
|&: rdr: Reader<_>| rdr.delimiter(b'z'));
|rdr: Reader<_>| rdr.delimiter(b'z'));

parses_to!(headers_absent, "a\nb", vec![vec!["b"]],
|&: rdr: Reader<_>| rdr.has_headers(true));
|rdr: Reader<_>| rdr.has_headers(true));

parses_to!(flexible_rows, "a\nx,y", vec![vec!["a"], vec!["x", "y"]],
|&: rdr: Reader<_>| rdr.flexible(true));
|rdr: Reader<_>| rdr.flexible(true));
parses_to!(flexible_rows2, "a,b\nx", vec![vec!["a", "b"], vec!["x"]],
|&: rdr: Reader<_>| rdr.flexible(true));
|rdr: Reader<_>| rdr.flexible(true));

fail_parses_to!(nonflexible, "a\nx,y", vec![]);
fail_parses_to!(nonflexible2, "a,b\nx", vec![]);
Expand Down Expand Up @@ -264,24 +264,24 @@ writes_as!(wtr_many_record_one_field, vec![vec!["a"], vec!["b"]], "a\nb\n");
writes_as!(wtr_many_record_many_field,
vec![vec!["a", "b"], vec!["x", "y"]], "a,b\nx,y\n");
writes_as!(wtr_one_record_one_field_crlf, vec![vec!["a"]], "a\r\n",
|&: wtr: Writer<_>| wtr.record_terminator(RecordTerminator::CRLF));
|wtr: Writer<_>| wtr.record_terminator(RecordTerminator::CRLF));
writes_as!(wtr_one_record_many_field_crlf, vec![vec!["a", "b"]], "a,b\r\n",
|&: wtr: Writer<_>| wtr.record_terminator(RecordTerminator::CRLF));
|wtr: Writer<_>| wtr.record_terminator(RecordTerminator::CRLF));
writes_as!(wtr_many_record_one_field_crlf,
vec![vec!["a"], vec!["b"]], "a\r\nb\r\n",
|&: wtr: Writer<_>| wtr.record_terminator(RecordTerminator::CRLF));
|wtr: Writer<_>| wtr.record_terminator(RecordTerminator::CRLF));
writes_as!(wtr_many_record_many_field_crlf,
vec![vec!["a", "b"], vec!["x", "y"]], "a,b\r\nx,y\r\n",
|&: wtr: Writer<_>| wtr.record_terminator(RecordTerminator::CRLF));
|wtr: Writer<_>| wtr.record_terminator(RecordTerminator::CRLF));

writes_as!(wtr_tabs, vec![vec!["a", "b"]], "a\tb\n",
|&: wtr: Writer<_>| wtr.delimiter(b'\t'));
|wtr: Writer<_>| wtr.delimiter(b'\t'));
writes_as!(wtr_weird, vec![vec!["a", "b"]], "azb\n",
|&: wtr: Writer<_>| wtr.delimiter(b'z'));
|wtr: Writer<_>| wtr.delimiter(b'z'));
writes_as!(wtr_flexible, vec![vec!["a"], vec!["a", "b"]], "a\na,b\n",
|&: wtr: Writer<_>| wtr.flexible(true));
|wtr: Writer<_>| wtr.flexible(true));
writes_as!(wtr_flexible2, vec![vec!["a", "b"], vec!["a"]], "a,b\na\n",
|&: wtr: Writer<_>| wtr.flexible(true));
|wtr: Writer<_>| wtr.flexible(true));

writes_as!(wtr_quoted_lf, vec![vec!["a\n"]], "\"a\n\"\n");
writes_as!(wtr_quoted_cr, vec![vec!["a\r"]], "\"a\r\"\n");
Expand All @@ -298,24 +298,24 @@ writes_as!(wtr_empty_field_rows,
",a\na,b\n,a\n");

writes_as!(wtr_always_quote, vec![vec!["a"]], "\"a\"\n",
|&: wtr: Writer<_>| wtr.quote_style(QuoteStyle::Always));
|wtr: Writer<_>| wtr.quote_style(QuoteStyle::Always));
writes_as!(wtr_never_quote, vec![vec!["a"]], "a\n",
|&: wtr: Writer<_>| wtr.quote_style(QuoteStyle::Never));
|wtr: Writer<_>| wtr.quote_style(QuoteStyle::Never));

writes_as!(wtr_escape, vec![vec!["a\"b"]], "\"a\\\"b\"\n",
|&: wtr: Writer<_>| wtr.double_quote(false));
|wtr: Writer<_>| wtr.double_quote(false));
writes_as!(wtr_escape_weird, vec![vec!["a\"b"]], "\"az\"b\"\n",
|&: wtr: Writer<_>| wtr.double_quote(false).escape(b'z'));
|wtr: Writer<_>| wtr.double_quote(false).escape(b'z'));

writes_as!(wtr_quote_weird, vec![vec!["a,b"]], "za,bz\n",
|&: wtr: Writer<_>| wtr.quote(b'z'));
|wtr: Writer<_>| wtr.quote(b'z'));

fail_writes_as!(wtr_no_rows,
{ let rows: Vec<Vec<&str>> = vec![vec![]]; rows }, "");
fail_writes_as!(wtr_noflexible, vec![vec!["a"], vec!["a", "b"]], "a\na,b\n");
fail_writes_as!(wtr_noflexible2, vec![vec!["a", "b"], vec!["a"]], "a,b\na\n");
fail_writes_as!(wtr_never_quote_needs_quotes, vec![vec![","]], "\",\"",
|&: wtr: Writer<_>| wtr.quote_style(QuoteStyle::Never));
|wtr: Writer<_>| wtr.quote_style(QuoteStyle::Never));

encodes_as!(encode_int, vec![(1usize,)], "1\n");
encodes_as!(encode_many_int, vec![(1usize, 2i16)], "1,2\n");
Expand Down
6 changes: 3 additions & 3 deletions src/writer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ impl<W: io::Writer> Writer<W> {
}

fn should_quote(&self, field: &[u8]) -> CsvResult<bool> {
let needs = |&:| field.iter().any(|&b| self.byte_needs_quotes(b));
let needs = || field.iter().any(|&b| self.byte_needs_quotes(b));
match self.quote_style {
QuoteStyle::Always => Ok(true),
QuoteStyle::Necessary => Ok(needs()),
Expand Down Expand Up @@ -427,11 +427,11 @@ impl<W: io::Writer> Writer<W> {
loop {
match s.position_elem(&self.quote) {
None => {
buf.push_all(s);
buf.extend(s.iter().map(|&x|x));
break
}
Some(next_quote) => {
buf.push_all(&s[..next_quote]);
buf.extend(s[..next_quote].iter().map(|&x|x));
if self.double_quote {
buf.push(self.quote);
buf.push(self.quote);
Expand Down

0 comments on commit 173f327

Please sign in to comment.