1
Fork 0

Test fixes and rebase conflicts, round 3

This commit is contained in:
Alex Crichton 2015-03-31 16:20:09 -07:00
parent 50b3ecf3bc
commit 72f59732d7
18 changed files with 156 additions and 153 deletions

View file

@ -78,7 +78,6 @@
#![feature(unsafe_no_drop_flag, filling_drop)] #![feature(unsafe_no_drop_flag, filling_drop)]
#![feature(core)] #![feature(core)]
#![feature(unique)] #![feature(unique)]
#![feature(convert)]
#![cfg_attr(test, feature(test, alloc, rustc_private))] #![cfg_attr(test, feature(test, alloc, rustc_private))]
#![cfg_attr(all(not(feature = "external_funcs"), not(feature = "external_crate")), #![cfg_attr(all(not(feature = "external_funcs"), not(feature = "external_crate")),
feature(libc))] feature(libc))]

View file

@ -12,10 +12,10 @@
//! Unicode string manipulation (the `str` type). //! Unicode string manipulation (the `str` type).
//! //!
//! Rust's `str` type is one of the core primitive types of the language. `&str` is the borrowed //! Rust's `str` type is one of the core primitive types of the language. `&str`
//! string type. This type of string can only be created from other strings, unless it is a //! is the borrowed string type. This type of string can only be created from
//! `&'static str` (see below). It is not possible to move out of borrowed strings because they are //! other strings, unless it is a `&'static str` (see below). It is not possible
//! owned elsewhere. //! to move out of borrowed strings because they are owned elsewhere.
//! //!
//! # Examples //! # Examples
//! //!
@ -25,8 +25,9 @@
//! let s = "Hello, world."; //! let s = "Hello, world.";
//! ``` //! ```
//! //!
//! This `&str` is a `&'static str`, which is the type of string literals. They're `'static` //! This `&str` is a `&'static str`, which is the type of string literals.
//! because literals are available for the entire lifetime of the program. //! They're `'static` because literals are available for the entire lifetime of
//! the program.
//! //!
//! You can get a non-`'static` `&str` by taking a slice of a `String`: //! You can get a non-`'static` `&str` by taking a slice of a `String`:
//! //!
@ -37,12 +38,13 @@
//! //!
//! # Representation //! # Representation
//! //!
//! Rust's string type, `str`, is a sequence of Unicode scalar values encoded as a stream of UTF-8 //! Rust's string type, `str`, is a sequence of Unicode scalar values encoded as
//! bytes. All [strings](../../reference.html#literals) are guaranteed to be validly encoded UTF-8 //! a stream of UTF-8 bytes. All [strings](../../reference.html#literals) are
//! sequences. Additionally, strings are not null-terminated and can thus contain null bytes. //! guaranteed to be validly encoded UTF-8 sequences. Additionally, strings are
//! not null-terminated and can thus contain null bytes.
//! //!
//! The actual representation of `str`s have direct mappings to slices: `&str` is the same as //! The actual representation of `str`s have direct mappings to slices: `&str`
//! `&[u8]`. //! is the same as `&[u8]`.
#![doc(primitive = "str")] #![doc(primitive = "str")]
#![stable(feature = "rust1", since = "1.0.0")] #![stable(feature = "rust1", since = "1.0.0")]

View file

@ -41,10 +41,11 @@
//! } //! }
//! //!
//! // Rough translation of the iteration without a `for` iterator. //! // Rough translation of the iteration without a `for` iterator.
//! # let values = vec![1, 2, 3];
//! let mut it = values.into_iter(); //! let mut it = values.into_iter();
//! loop { //! loop {
//! match it.next() { //! match it.next() {
//! Some(&x) => { //! Some(x) => {
//! println!("{}", x); //! println!("{}", x);
//! } //! }
//! None => { break } //! None => { break }

View file

@ -123,7 +123,6 @@
html_root_url = "http://doc.rust-lang.org/nightly/", html_root_url = "http://doc.rust-lang.org/nightly/",
html_playground_url = "http://play.rust-lang.org/")] html_playground_url = "http://play.rust-lang.org/")]
#![feature(io)]
#![feature(core)] #![feature(core)]
#![feature(rustc_private)] #![feature(rustc_private)]
#![feature(staged_api)] #![feature(staged_api)]

View file

@ -73,7 +73,6 @@ use std::cmp;
use std::fmt; use std::fmt;
use std::hash::{Hash, SipHasher, Hasher}; use std::hash::{Hash, SipHasher, Hasher};
use std::mem; use std::mem;
use std::num::ToPrimitive;
use std::ops; use std::ops;
use std::rc::Rc; use std::rc::Rc;
use std::vec::IntoIter; use std::vec::IntoIter;

View file

@ -503,34 +503,34 @@ mod tests {
let mut buf = [0, 0, 0]; let mut buf = [0, 0, 0];
let nread = reader.read(&mut buf); let nread = reader.read(&mut buf);
assert_eq!(Ok(3), nread); assert_eq!(nread.unwrap(), 3);
let b: &[_] = &[5, 6, 7]; let b: &[_] = &[5, 6, 7];
assert_eq!(buf, b); assert_eq!(buf, b);
let mut buf = [0, 0]; let mut buf = [0, 0];
let nread = reader.read(&mut buf); let nread = reader.read(&mut buf);
assert_eq!(Ok(2), nread); assert_eq!(nread.unwrap(), 2);
let b: &[_] = &[0, 1]; let b: &[_] = &[0, 1];
assert_eq!(buf, b); assert_eq!(buf, b);
let mut buf = [0]; let mut buf = [0];
let nread = reader.read(&mut buf); let nread = reader.read(&mut buf);
assert_eq!(Ok(1), nread); assert_eq!(nread.unwrap(), 1);
let b: &[_] = &[2]; let b: &[_] = &[2];
assert_eq!(buf, b); assert_eq!(buf, b);
let mut buf = [0, 0, 0]; let mut buf = [0, 0, 0];
let nread = reader.read(&mut buf); let nread = reader.read(&mut buf);
assert_eq!(Ok(1), nread); assert_eq!(nread.unwrap(), 1);
let b: &[_] = &[3, 0, 0]; let b: &[_] = &[3, 0, 0];
assert_eq!(buf, b); assert_eq!(buf, b);
let nread = reader.read(&mut buf); let nread = reader.read(&mut buf);
assert_eq!(Ok(1), nread); assert_eq!(nread.unwrap(), 1);
let b: &[_] = &[4, 0, 0]; let b: &[_] = &[4, 0, 0];
assert_eq!(buf, b); assert_eq!(buf, b);
assert_eq!(reader.read(&mut buf), Ok(0)); assert_eq!(reader.read(&mut buf).unwrap(), 0);
} }
#[test] #[test]
@ -592,7 +592,7 @@ mod tests {
} }
let mut stream = BufStream::new(S); let mut stream = BufStream::new(S);
assert_eq!(stream.read(&mut [0; 10]), Ok(0)); assert_eq!(stream.read(&mut [0; 10]).unwrap(), 0);
stream.write(&[0; 10]).unwrap(); stream.write(&[0; 10]).unwrap();
stream.flush().unwrap(); stream.flush().unwrap();
} }
@ -658,10 +658,10 @@ mod tests {
let in_buf: &[u8] = b"a\nb\nc"; let in_buf: &[u8] = b"a\nb\nc";
let reader = BufReader::with_capacity(2, in_buf); let reader = BufReader::with_capacity(2, in_buf);
let mut it = reader.lines(); let mut it = reader.lines();
assert_eq!(it.next(), Some(Ok("a".to_string()))); assert_eq!(it.next().unwrap().unwrap(), "a".to_string());
assert_eq!(it.next(), Some(Ok("b".to_string()))); assert_eq!(it.next().unwrap().unwrap(), "b".to_string());
assert_eq!(it.next(), Some(Ok("c".to_string()))); assert_eq!(it.next().unwrap().unwrap(), "c".to_string());
assert_eq!(it.next(), None); assert!(it.next().is_none());
} }
#[test] #[test]
@ -669,20 +669,20 @@ mod tests {
let inner = ShortReader{lengths: vec![0, 1, 2, 0, 1, 0]}; let inner = ShortReader{lengths: vec![0, 1, 2, 0, 1, 0]};
let mut reader = BufReader::new(inner); let mut reader = BufReader::new(inner);
let mut buf = [0, 0]; let mut buf = [0, 0];
assert_eq!(reader.read(&mut buf), Ok(0)); assert_eq!(reader.read(&mut buf).unwrap(), 0);
assert_eq!(reader.read(&mut buf), Ok(1)); assert_eq!(reader.read(&mut buf).unwrap(), 1);
assert_eq!(reader.read(&mut buf), Ok(2)); assert_eq!(reader.read(&mut buf).unwrap(), 2);
assert_eq!(reader.read(&mut buf), Ok(0)); assert_eq!(reader.read(&mut buf).unwrap(), 0);
assert_eq!(reader.read(&mut buf), Ok(1)); assert_eq!(reader.read(&mut buf).unwrap(), 1);
assert_eq!(reader.read(&mut buf), Ok(0)); assert_eq!(reader.read(&mut buf).unwrap(), 0);
assert_eq!(reader.read(&mut buf), Ok(0)); assert_eq!(reader.read(&mut buf).unwrap(), 0);
} }
#[test] #[test]
fn read_char_buffered() { fn read_char_buffered() {
let buf = [195, 159]; let buf = [195, 159];
let reader = BufReader::with_capacity(1, &buf[..]); let reader = BufReader::with_capacity(1, &buf[..]);
assert_eq!(reader.chars().next(), Some(Ok('ß'))); assert_eq!(reader.chars().next().unwrap().unwrap(), 'ß');
} }
#[test] #[test]
@ -690,9 +690,9 @@ mod tests {
let buf = [195, 159, b'a']; let buf = [195, 159, b'a'];
let reader = BufReader::with_capacity(1, &buf[..]); let reader = BufReader::with_capacity(1, &buf[..]);
let mut it = reader.chars(); let mut it = reader.chars();
assert_eq!(it.next(), Some(Ok('ß'))); assert_eq!(it.next().unwrap().unwrap(), 'ß');
assert_eq!(it.next(), Some(Ok('a'))); assert_eq!(it.next().unwrap().unwrap(), 'a');
assert_eq!(it.next(), None); assert!(it.next().is_none());
} }
#[test] #[test]

View file

@ -171,9 +171,9 @@ mod tests {
#[test] #[test]
fn test_vec_writer() { fn test_vec_writer() {
let mut writer = Vec::new(); let mut writer = Vec::new();
assert_eq!(writer.write(&[0]), Ok(1)); assert_eq!(writer.write(&[0]).unwrap(), 1);
assert_eq!(writer.write(&[1, 2, 3]), Ok(3)); assert_eq!(writer.write(&[1, 2, 3]).unwrap(), 3);
assert_eq!(writer.write(&[4, 5, 6, 7]), Ok(4)); assert_eq!(writer.write(&[4, 5, 6, 7]).unwrap(), 4);
let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7]; let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7];
assert_eq!(writer, b); assert_eq!(writer, b);
} }
@ -181,9 +181,9 @@ mod tests {
#[test] #[test]
fn test_mem_writer() { fn test_mem_writer() {
let mut writer = Cursor::new(Vec::new()); let mut writer = Cursor::new(Vec::new());
assert_eq!(writer.write(&[0]), Ok(1)); assert_eq!(writer.write(&[0]).unwrap(), 1);
assert_eq!(writer.write(&[1, 2, 3]), Ok(3)); assert_eq!(writer.write(&[1, 2, 3]).unwrap(), 3);
assert_eq!(writer.write(&[4, 5, 6, 7]), Ok(4)); assert_eq!(writer.write(&[4, 5, 6, 7]).unwrap(), 4);
let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7]; let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7];
assert_eq!(&writer.get_ref()[..], b); assert_eq!(&writer.get_ref()[..], b);
} }
@ -194,16 +194,16 @@ mod tests {
{ {
let mut writer = Cursor::new(&mut buf[..]); let mut writer = Cursor::new(&mut buf[..]);
assert_eq!(writer.position(), 0); assert_eq!(writer.position(), 0);
assert_eq!(writer.write(&[0]), Ok(1)); assert_eq!(writer.write(&[0]).unwrap(), 1);
assert_eq!(writer.position(), 1); assert_eq!(writer.position(), 1);
assert_eq!(writer.write(&[1, 2, 3]), Ok(3)); assert_eq!(writer.write(&[1, 2, 3]).unwrap(), 3);
assert_eq!(writer.write(&[4, 5, 6, 7]), Ok(4)); assert_eq!(writer.write(&[4, 5, 6, 7]).unwrap(), 4);
assert_eq!(writer.position(), 8); assert_eq!(writer.position(), 8);
assert_eq!(writer.write(&[]), Ok(0)); assert_eq!(writer.write(&[]).unwrap(), 0);
assert_eq!(writer.position(), 8); assert_eq!(writer.position(), 8);
assert_eq!(writer.write(&[8, 9]), Ok(1)); assert_eq!(writer.write(&[8, 9]).unwrap(), 1);
assert_eq!(writer.write(&[10]), Ok(0)); assert_eq!(writer.write(&[10]).unwrap(), 0);
} }
let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8]; let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8];
assert_eq!(buf, b); assert_eq!(buf, b);
@ -215,22 +215,22 @@ mod tests {
{ {
let mut writer = Cursor::new(&mut buf[..]); let mut writer = Cursor::new(&mut buf[..]);
assert_eq!(writer.position(), 0); assert_eq!(writer.position(), 0);
assert_eq!(writer.write(&[1]), Ok(1)); assert_eq!(writer.write(&[1]).unwrap(), 1);
assert_eq!(writer.position(), 1); assert_eq!(writer.position(), 1);
assert_eq!(writer.seek(SeekFrom::Start(2)), Ok(2)); assert_eq!(writer.seek(SeekFrom::Start(2)).unwrap(), 2);
assert_eq!(writer.position(), 2); assert_eq!(writer.position(), 2);
assert_eq!(writer.write(&[2]), Ok(1)); assert_eq!(writer.write(&[2]).unwrap(), 1);
assert_eq!(writer.position(), 3); assert_eq!(writer.position(), 3);
assert_eq!(writer.seek(SeekFrom::Current(-2)), Ok(1)); assert_eq!(writer.seek(SeekFrom::Current(-2)).unwrap(), 1);
assert_eq!(writer.position(), 1); assert_eq!(writer.position(), 1);
assert_eq!(writer.write(&[3]), Ok(1)); assert_eq!(writer.write(&[3]).unwrap(), 1);
assert_eq!(writer.position(), 2); assert_eq!(writer.position(), 2);
assert_eq!(writer.seek(SeekFrom::End(-1)), Ok(7)); assert_eq!(writer.seek(SeekFrom::End(-1)).unwrap(), 7);
assert_eq!(writer.position(), 7); assert_eq!(writer.position(), 7);
assert_eq!(writer.write(&[4]), Ok(1)); assert_eq!(writer.write(&[4]).unwrap(), 1);
assert_eq!(writer.position(), 8); assert_eq!(writer.position(), 8);
} }
@ -242,31 +242,31 @@ mod tests {
fn test_buf_writer_error() { fn test_buf_writer_error() {
let mut buf = [0 as u8; 2]; let mut buf = [0 as u8; 2];
let mut writer = Cursor::new(&mut buf[..]); let mut writer = Cursor::new(&mut buf[..]);
assert_eq!(writer.write(&[0]), Ok(1)); assert_eq!(writer.write(&[0]).unwrap(), 1);
assert_eq!(writer.write(&[0, 0]), Ok(1)); assert_eq!(writer.write(&[0, 0]).unwrap(), 1);
assert_eq!(writer.write(&[0, 0]), Ok(0)); assert_eq!(writer.write(&[0, 0]).unwrap(), 0);
} }
#[test] #[test]
fn test_mem_reader() { fn test_mem_reader() {
let mut reader = Cursor::new(vec!(0, 1, 2, 3, 4, 5, 6, 7)); let mut reader = Cursor::new(vec!(0, 1, 2, 3, 4, 5, 6, 7));
let mut buf = []; let mut buf = [];
assert_eq!(reader.read(&mut buf), Ok(0)); assert_eq!(reader.read(&mut buf).unwrap(), 0);
assert_eq!(reader.position(), 0); assert_eq!(reader.position(), 0);
let mut buf = [0]; let mut buf = [0];
assert_eq!(reader.read(&mut buf), Ok(1)); assert_eq!(reader.read(&mut buf).unwrap(), 1);
assert_eq!(reader.position(), 1); assert_eq!(reader.position(), 1);
let b: &[_] = &[0]; let b: &[_] = &[0];
assert_eq!(buf, b); assert_eq!(buf, b);
let mut buf = [0; 4]; let mut buf = [0; 4];
assert_eq!(reader.read(&mut buf), Ok(4)); assert_eq!(reader.read(&mut buf).unwrap(), 4);
assert_eq!(reader.position(), 5); assert_eq!(reader.position(), 5);
let b: &[_] = &[1, 2, 3, 4]; let b: &[_] = &[1, 2, 3, 4];
assert_eq!(buf, b); assert_eq!(buf, b);
assert_eq!(reader.read(&mut buf), Ok(3)); assert_eq!(reader.read(&mut buf).unwrap(), 3);
let b: &[_] = &[5, 6, 7]; let b: &[_] = &[5, 6, 7];
assert_eq!(&buf[..3], b); assert_eq!(&buf[..3], b);
assert_eq!(reader.read(&mut buf), Ok(0)); assert_eq!(reader.read(&mut buf).unwrap(), 0);
} }
#[test] #[test]
@ -282,21 +282,21 @@ mod tests {
let in_buf = vec![0, 1, 2, 3, 4, 5, 6, 7]; let in_buf = vec![0, 1, 2, 3, 4, 5, 6, 7];
let mut reader = &mut &in_buf[..]; let mut reader = &mut &in_buf[..];
let mut buf = []; let mut buf = [];
assert_eq!(reader.read(&mut buf), Ok(0)); assert_eq!(reader.read(&mut buf).unwrap(), 0);
let mut buf = [0]; let mut buf = [0];
assert_eq!(reader.read(&mut buf), Ok(1)); assert_eq!(reader.read(&mut buf).unwrap(), 1);
assert_eq!(reader.len(), 7); assert_eq!(reader.len(), 7);
let b: &[_] = &[0]; let b: &[_] = &[0];
assert_eq!(&buf[..], b); assert_eq!(&buf[..], b);
let mut buf = [0; 4]; let mut buf = [0; 4];
assert_eq!(reader.read(&mut buf), Ok(4)); assert_eq!(reader.read(&mut buf).unwrap(), 4);
assert_eq!(reader.len(), 3); assert_eq!(reader.len(), 3);
let b: &[_] = &[1, 2, 3, 4]; let b: &[_] = &[1, 2, 3, 4];
assert_eq!(&buf[..], b); assert_eq!(&buf[..], b);
assert_eq!(reader.read(&mut buf), Ok(3)); assert_eq!(reader.read(&mut buf).unwrap(), 3);
let b: &[_] = &[5, 6, 7]; let b: &[_] = &[5, 6, 7];
assert_eq!(&buf[..3], b); assert_eq!(&buf[..3], b);
assert_eq!(reader.read(&mut buf), Ok(0)); assert_eq!(reader.read(&mut buf).unwrap(), 0);
} }
#[test] #[test]
@ -304,33 +304,33 @@ mod tests {
let in_buf = vec![0, 1, 2, 3, 4, 5, 6, 7]; let in_buf = vec![0, 1, 2, 3, 4, 5, 6, 7];
let mut reader = Cursor::new(&in_buf[..]); let mut reader = Cursor::new(&in_buf[..]);
let mut buf = []; let mut buf = [];
assert_eq!(reader.read(&mut buf), Ok(0)); assert_eq!(reader.read(&mut buf).unwrap(), 0);
assert_eq!(reader.position(), 0); assert_eq!(reader.position(), 0);
let mut buf = [0]; let mut buf = [0];
assert_eq!(reader.read(&mut buf), Ok(1)); assert_eq!(reader.read(&mut buf).unwrap(), 1);
assert_eq!(reader.position(), 1); assert_eq!(reader.position(), 1);
let b: &[_] = &[0]; let b: &[_] = &[0];
assert_eq!(buf, b); assert_eq!(buf, b);
let mut buf = [0; 4]; let mut buf = [0; 4];
assert_eq!(reader.read(&mut buf), Ok(4)); assert_eq!(reader.read(&mut buf).unwrap(), 4);
assert_eq!(reader.position(), 5); assert_eq!(reader.position(), 5);
let b: &[_] = &[1, 2, 3, 4]; let b: &[_] = &[1, 2, 3, 4];
assert_eq!(buf, b); assert_eq!(buf, b);
assert_eq!(reader.read(&mut buf), Ok(3)); assert_eq!(reader.read(&mut buf).unwrap(), 3);
let b: &[_] = &[5, 6, 7]; let b: &[_] = &[5, 6, 7];
assert_eq!(&buf[..3], b); assert_eq!(&buf[..3], b);
assert_eq!(reader.read(&mut buf), Ok(0)); assert_eq!(reader.read(&mut buf).unwrap(), 0);
} }
#[test] #[test]
fn test_read_char() { fn test_read_char() {
let b = &b"Vi\xE1\xBB\x87t"[..]; let b = &b"Vi\xE1\xBB\x87t"[..];
let mut c = Cursor::new(b).chars(); let mut c = Cursor::new(b).chars();
assert_eq!(c.next(), Some(Ok('V'))); assert_eq!(c.next().unwrap().unwrap(), 'V');
assert_eq!(c.next(), Some(Ok('i'))); assert_eq!(c.next().unwrap().unwrap(), 'i');
assert_eq!(c.next(), Some(Ok('ệ'))); assert_eq!(c.next().unwrap().unwrap(), 'ệ');
assert_eq!(c.next(), Some(Ok('t'))); assert_eq!(c.next().unwrap().unwrap(), 't');
assert_eq!(c.next(), None); assert!(c.next().is_none());
} }
#[test] #[test]
@ -344,17 +344,17 @@ mod tests {
fn seek_past_end() { fn seek_past_end() {
let buf = [0xff]; let buf = [0xff];
let mut r = Cursor::new(&buf[..]); let mut r = Cursor::new(&buf[..]);
assert_eq!(r.seek(SeekFrom::Start(10)), Ok(10)); assert_eq!(r.seek(SeekFrom::Start(10)).unwrap(), 10);
assert_eq!(r.read(&mut [0]), Ok(0)); assert_eq!(r.read(&mut [0]).unwrap(), 0);
let mut r = Cursor::new(vec!(10)); let mut r = Cursor::new(vec!(10));
assert_eq!(r.seek(SeekFrom::Start(10)), Ok(10)); assert_eq!(r.seek(SeekFrom::Start(10)).unwrap(), 10);
assert_eq!(r.read(&mut [0]), Ok(0)); assert_eq!(r.read(&mut [0]).unwrap(), 0);
let mut buf = [0]; let mut buf = [0];
let mut r = Cursor::new(&mut buf[..]); let mut r = Cursor::new(&mut buf[..]);
assert_eq!(r.seek(SeekFrom::Start(10)), Ok(10)); assert_eq!(r.seek(SeekFrom::Start(10)).unwrap(), 10);
assert_eq!(r.write(&[3]), Ok(0)); assert_eq!(r.write(&[3]).unwrap(), 0);
} }
#[test] #[test]
@ -375,32 +375,32 @@ mod tests {
fn test_seekable_mem_writer() { fn test_seekable_mem_writer() {
let mut writer = Cursor::new(Vec::<u8>::new()); let mut writer = Cursor::new(Vec::<u8>::new());
assert_eq!(writer.position(), 0); assert_eq!(writer.position(), 0);
assert_eq!(writer.write(&[0]), Ok(1)); assert_eq!(writer.write(&[0]).unwrap(), 1);
assert_eq!(writer.position(), 1); assert_eq!(writer.position(), 1);
assert_eq!(writer.write(&[1, 2, 3]), Ok(3)); assert_eq!(writer.write(&[1, 2, 3]).unwrap(), 3);
assert_eq!(writer.write(&[4, 5, 6, 7]), Ok(4)); assert_eq!(writer.write(&[4, 5, 6, 7]).unwrap(), 4);
assert_eq!(writer.position(), 8); assert_eq!(writer.position(), 8);
let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7]; let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7];
assert_eq!(&writer.get_ref()[..], b); assert_eq!(&writer.get_ref()[..], b);
assert_eq!(writer.seek(SeekFrom::Start(0)), Ok(0)); assert_eq!(writer.seek(SeekFrom::Start(0)).unwrap(), 0);
assert_eq!(writer.position(), 0); assert_eq!(writer.position(), 0);
assert_eq!(writer.write(&[3, 4]), Ok(2)); assert_eq!(writer.write(&[3, 4]).unwrap(), 2);
let b: &[_] = &[3, 4, 2, 3, 4, 5, 6, 7]; let b: &[_] = &[3, 4, 2, 3, 4, 5, 6, 7];
assert_eq!(&writer.get_ref()[..], b); assert_eq!(&writer.get_ref()[..], b);
assert_eq!(writer.seek(SeekFrom::Current(1)), Ok(3)); assert_eq!(writer.seek(SeekFrom::Current(1)).unwrap(), 3);
assert_eq!(writer.write(&[0, 1]), Ok(2)); assert_eq!(writer.write(&[0, 1]).unwrap(), 2);
let b: &[_] = &[3, 4, 2, 0, 1, 5, 6, 7]; let b: &[_] = &[3, 4, 2, 0, 1, 5, 6, 7];
assert_eq!(&writer.get_ref()[..], b); assert_eq!(&writer.get_ref()[..], b);
assert_eq!(writer.seek(SeekFrom::End(-1)), Ok(7)); assert_eq!(writer.seek(SeekFrom::End(-1)).unwrap(), 7);
assert_eq!(writer.write(&[1, 2]), Ok(2)); assert_eq!(writer.write(&[1, 2]).unwrap(), 2);
let b: &[_] = &[3, 4, 2, 0, 1, 5, 6, 1, 2]; let b: &[_] = &[3, 4, 2, 0, 1, 5, 6, 1, 2];
assert_eq!(&writer.get_ref()[..], b); assert_eq!(&writer.get_ref()[..], b);
assert_eq!(writer.seek(SeekFrom::End(1)), Ok(10)); assert_eq!(writer.seek(SeekFrom::End(1)).unwrap(), 10);
assert_eq!(writer.write(&[1]), Ok(1)); assert_eq!(writer.write(&[1]).unwrap(), 1);
let b: &[_] = &[3, 4, 2, 0, 1, 5, 6, 1, 2, 0, 1]; let b: &[_] = &[3, 4, 2, 0, 1, 5, 6, 1, 2, 0, 1];
assert_eq!(&writer.get_ref()[..], b); assert_eq!(&writer.get_ref()[..], b);
} }
@ -408,8 +408,8 @@ mod tests {
#[test] #[test]
fn vec_seek_past_end() { fn vec_seek_past_end() {
let mut r = Cursor::new(Vec::new()); let mut r = Cursor::new(Vec::new());
assert_eq!(r.seek(SeekFrom::Start(10)), Ok(10)); assert_eq!(r.seek(SeekFrom::Start(10)).unwrap(), 10);
assert_eq!(r.write(&[3]), Ok(1)); assert_eq!(r.write(&[3]).unwrap(), 1);
} }
#[test] #[test]

View file

@ -920,18 +920,18 @@ mod tests {
fn read_until() { fn read_until() {
let mut buf = Cursor::new(&b"12"[..]); let mut buf = Cursor::new(&b"12"[..]);
let mut v = Vec::new(); let mut v = Vec::new();
assert_eq!(buf.read_until(b'3', &mut v), Ok(2)); assert_eq!(buf.read_until(b'3', &mut v).unwrap(), 2);
assert_eq!(v, b"12"); assert_eq!(v, b"12");
let mut buf = Cursor::new(&b"1233"[..]); let mut buf = Cursor::new(&b"1233"[..]);
let mut v = Vec::new(); let mut v = Vec::new();
assert_eq!(buf.read_until(b'3', &mut v), Ok(3)); assert_eq!(buf.read_until(b'3', &mut v).unwrap(), 3);
assert_eq!(v, b"123"); assert_eq!(v, b"123");
v.truncate(0); v.truncate(0);
assert_eq!(buf.read_until(b'3', &mut v), Ok(1)); assert_eq!(buf.read_until(b'3', &mut v).unwrap(), 1);
assert_eq!(v, b"3"); assert_eq!(v, b"3");
v.truncate(0); v.truncate(0);
assert_eq!(buf.read_until(b'3', &mut v), Ok(0)); assert_eq!(buf.read_until(b'3', &mut v).unwrap(), 0);
assert_eq!(v, []); assert_eq!(v, []);
} }
@ -939,32 +939,32 @@ mod tests {
fn split() { fn split() {
let buf = Cursor::new(&b"12"[..]); let buf = Cursor::new(&b"12"[..]);
let mut s = buf.split(b'3'); let mut s = buf.split(b'3');
assert_eq!(s.next(), Some(Ok(vec![b'1', b'2']))); assert_eq!(s.next().unwrap().unwrap(), vec![b'1', b'2']);
assert_eq!(s.next(), None); assert!(s.next().is_none());
let buf = Cursor::new(&b"1233"[..]); let buf = Cursor::new(&b"1233"[..]);
let mut s = buf.split(b'3'); let mut s = buf.split(b'3');
assert_eq!(s.next(), Some(Ok(vec![b'1', b'2']))); assert_eq!(s.next().unwrap().unwrap(), vec![b'1', b'2']);
assert_eq!(s.next(), Some(Ok(vec![]))); assert_eq!(s.next().unwrap().unwrap(), vec![]);
assert_eq!(s.next(), None); assert!(s.next().is_none());
} }
#[test] #[test]
fn read_line() { fn read_line() {
let mut buf = Cursor::new(&b"12"[..]); let mut buf = Cursor::new(&b"12"[..]);
let mut v = String::new(); let mut v = String::new();
assert_eq!(buf.read_line(&mut v), Ok(2)); assert_eq!(buf.read_line(&mut v).unwrap(), 2);
assert_eq!(v, "12"); assert_eq!(v, "12");
let mut buf = Cursor::new(&b"12\n\n"[..]); let mut buf = Cursor::new(&b"12\n\n"[..]);
let mut v = String::new(); let mut v = String::new();
assert_eq!(buf.read_line(&mut v), Ok(3)); assert_eq!(buf.read_line(&mut v).unwrap(), 3);
assert_eq!(v, "12\n"); assert_eq!(v, "12\n");
v.truncate(0); v.truncate(0);
assert_eq!(buf.read_line(&mut v), Ok(1)); assert_eq!(buf.read_line(&mut v).unwrap(), 1);
assert_eq!(v, "\n"); assert_eq!(v, "\n");
v.truncate(0); v.truncate(0);
assert_eq!(buf.read_line(&mut v), Ok(0)); assert_eq!(buf.read_line(&mut v).unwrap(), 0);
assert_eq!(v, ""); assert_eq!(v, "");
} }
@ -972,26 +972,26 @@ mod tests {
fn lines() { fn lines() {
let buf = Cursor::new(&b"12"[..]); let buf = Cursor::new(&b"12"[..]);
let mut s = buf.lines(); let mut s = buf.lines();
assert_eq!(s.next(), Some(Ok("12".to_string()))); assert_eq!(s.next().unwrap().unwrap(), "12".to_string());
assert_eq!(s.next(), None); assert!(s.next().is_none());
let buf = Cursor::new(&b"12\n\n"[..]); let buf = Cursor::new(&b"12\n\n"[..]);
let mut s = buf.lines(); let mut s = buf.lines();
assert_eq!(s.next(), Some(Ok("12".to_string()))); assert_eq!(s.next().unwrap().unwrap(), "12".to_string());
assert_eq!(s.next(), Some(Ok(String::new()))); assert_eq!(s.next().unwrap().unwrap(), "".to_string());
assert_eq!(s.next(), None); assert!(s.next().is_none());
} }
#[test] #[test]
fn read_to_end() { fn read_to_end() {
let mut c = Cursor::new(&b""[..]); let mut c = Cursor::new(&b""[..]);
let mut v = Vec::new(); let mut v = Vec::new();
assert_eq!(c.read_to_end(&mut v), Ok(0)); assert_eq!(c.read_to_end(&mut v).unwrap(), 0);
assert_eq!(v, []); assert_eq!(v, []);
let mut c = Cursor::new(&b"1"[..]); let mut c = Cursor::new(&b"1"[..]);
let mut v = Vec::new(); let mut v = Vec::new();
assert_eq!(c.read_to_end(&mut v), Ok(1)); assert_eq!(c.read_to_end(&mut v).unwrap(), 1);
assert_eq!(v, b"1"); assert_eq!(v, b"1");
} }
@ -999,12 +999,12 @@ mod tests {
fn read_to_string() { fn read_to_string() {
let mut c = Cursor::new(&b""[..]); let mut c = Cursor::new(&b""[..]);
let mut v = String::new(); let mut v = String::new();
assert_eq!(c.read_to_string(&mut v), Ok(0)); assert_eq!(c.read_to_string(&mut v).unwrap(), 0);
assert_eq!(v, ""); assert_eq!(v, "");
let mut c = Cursor::new(&b"1"[..]); let mut c = Cursor::new(&b"1"[..]);
let mut v = String::new(); let mut v = String::new();
assert_eq!(c.read_to_string(&mut v), Ok(1)); assert_eq!(c.read_to_string(&mut v).unwrap(), 1);
assert_eq!(v, "1"); assert_eq!(v, "1");
let mut c = Cursor::new(&b"\xff"[..]); let mut c = Cursor::new(&b"\xff"[..]);
@ -1018,11 +1018,11 @@ mod tests {
impl Read for R { impl Read for R {
fn read(&mut self, _: &mut [u8]) -> io::Result<usize> { fn read(&mut self, _: &mut [u8]) -> io::Result<usize> {
Err(io::Error::new(io::ErrorKind::Other, "", None)) Err(io::Error::new(io::ErrorKind::Other, ""))
} }
} }
let mut buf = [0; 1]; let mut buf = [0; 1];
assert_eq!(Ok(0), R.take(0).read(&mut buf)); assert_eq!(0, R.take(0).read(&mut buf).unwrap());
} }
} }

View file

@ -111,33 +111,33 @@ mod test {
#[test] #[test]
fn sink_sinks() { fn sink_sinks() {
let mut s = sink(); let mut s = sink();
assert_eq!(s.write(&[]), Ok(0)); assert_eq!(s.write(&[]).unwrap(), 0);
assert_eq!(s.write(&[0]), Ok(1)); assert_eq!(s.write(&[0]).unwrap(), 1);
assert_eq!(s.write(&[0; 1024]), Ok(1024)); assert_eq!(s.write(&[0; 1024]).unwrap(), 1024);
assert_eq!(s.by_ref().write(&[0; 1024]), Ok(1024)); assert_eq!(s.by_ref().write(&[0; 1024]).unwrap(), 1024);
} }
#[test] #[test]
fn empty_reads() { fn empty_reads() {
let mut e = empty(); let mut e = empty();
assert_eq!(e.read(&mut []), Ok(0)); assert_eq!(e.read(&mut []).unwrap(), 0);
assert_eq!(e.read(&mut [0]), Ok(0)); assert_eq!(e.read(&mut [0]).unwrap(), 0);
assert_eq!(e.read(&mut [0; 1024]), Ok(0)); assert_eq!(e.read(&mut [0; 1024]).unwrap(), 0);
assert_eq!(e.by_ref().read(&mut [0; 1024]), Ok(0)); assert_eq!(e.by_ref().read(&mut [0; 1024]).unwrap(), 0);
} }
#[test] #[test]
fn repeat_repeats() { fn repeat_repeats() {
let mut r = repeat(4); let mut r = repeat(4);
let mut b = [0; 1024]; let mut b = [0; 1024];
assert_eq!(r.read(&mut b), Ok(1024)); assert_eq!(r.read(&mut b).unwrap(), 1024);
assert!(b.iter().all(|b| *b == 4)); assert!(b.iter().all(|b| *b == 4));
} }
#[test] #[test]
fn take_some_bytes() { fn take_some_bytes() {
assert_eq!(repeat(4).take(100).bytes().count(), 100); assert_eq!(repeat(4).take(100).bytes().count(), 100);
assert_eq!(repeat(4).take(100).bytes().next(), Some(Ok(4))); assert_eq!(repeat(4).take(100).bytes().next().unwrap().unwrap(), 4);
assert_eq!(repeat(1).take(10).chain(repeat(2).take(10)).bytes().count(), 20); assert_eq!(repeat(1).take(10).chain(repeat(2).take(10)).bytes().count(), 20);
} }
@ -146,7 +146,7 @@ mod test {
let mut buf = [0; 10]; let mut buf = [0; 10];
{ {
let mut ptr: &mut [u8] = &mut buf; let mut ptr: &mut [u8] = &mut buf;
assert_eq!(repeat(4).tee(&mut ptr).take(5).read(&mut [0; 10]), Ok(5)); assert_eq!(repeat(4).tee(&mut ptr).take(5).read(&mut [0; 10]).unwrap(), 5);
} }
assert_eq!(buf, [4, 4, 4, 4, 4, 0, 0, 0, 0, 0]); assert_eq!(buf, [4, 4, 4, 4, 4, 0, 0, 0, 0, 0]);
} }
@ -160,7 +160,7 @@ mod test {
let mut ptr2: &mut [u8] = &mut buf2; let mut ptr2: &mut [u8] = &mut buf2;
assert_eq!((&mut ptr1).broadcast(&mut ptr2) assert_eq!((&mut ptr1).broadcast(&mut ptr2)
.write(&[1, 2, 3]), Ok(3)); .write(&[1, 2, 3]).unwrap(), 3);
} }
assert_eq!(buf1, buf2); assert_eq!(buf1, buf2);
assert_eq!(buf1, [1, 2, 3, 0, 0, 0, 0, 0, 0, 0]); assert_eq!(buf1, [1, 2, 3, 0, 0, 0, 0, 0, 0, 0]);

View file

@ -697,8 +697,11 @@ mod tests {
false, false, false, true, false, false, false, Some(Global)); false, false, false, true, false, false, false, Some(Global));
} }
fn tsa<A: ToSocketAddrs>(a: A) -> io::Result<Vec<SocketAddr>> { fn tsa<A: ToSocketAddrs>(a: A) -> Result<Vec<SocketAddr>, String> {
Ok(try!(a.to_socket_addrs()).collect()) match a.to_socket_addrs() {
Ok(a) => Ok(a.collect()),
Err(e) => Err(e.to_string()),
}
} }
#[test] #[test]

View file

@ -521,7 +521,7 @@ mod tests {
let mut c = t!(TcpStream::connect(&addr)); let mut c = t!(TcpStream::connect(&addr));
let mut b = [0; 10]; let mut b = [0; 10];
assert_eq!(c.read(&mut b), Ok(1)); assert_eq!(c.read(&mut b).unwrap(), 1);
t!(c.write(&[1])); t!(c.write(&[1]));
rx.recv().unwrap(); rx.recv().unwrap();
}) })
@ -566,7 +566,7 @@ mod tests {
let _t = thread::spawn(move|| { let _t = thread::spawn(move|| {
let mut s = t!(TcpStream::connect(&addr)); let mut s = t!(TcpStream::connect(&addr));
let mut buf = [0, 0]; let mut buf = [0, 0];
assert_eq!(s.read(&mut buf), Ok(1)); assert_eq!(s.read(&mut buf).unwrap(), 1);
assert_eq!(buf[0], 1); assert_eq!(buf[0], 1);
t!(s.write(&[2])); t!(s.write(&[2]));
}); });
@ -584,7 +584,7 @@ mod tests {
}); });
tx1.send(()).unwrap(); tx1.send(()).unwrap();
let mut buf = [0, 0]; let mut buf = [0, 0];
assert_eq!(s1.read(&mut buf), Ok(1)); assert_eq!(s1.read(&mut buf).unwrap(), 1);
rx2.recv().unwrap(); rx2.recv().unwrap();
}) })
} }
@ -657,7 +657,7 @@ mod tests {
let _t = thread::spawn(move|| { let _t = thread::spawn(move|| {
let mut c = t!(a.accept()).0; let mut c = t!(a.accept()).0;
let mut b = [0]; let mut b = [0];
assert_eq!(c.read(&mut b), Ok(0)); assert_eq!(c.read(&mut b).unwrap(), 0);
t!(c.write(&[1])); t!(c.write(&[1]));
}); });
@ -688,16 +688,16 @@ mod tests {
t!(s.shutdown(Shutdown::Write)); t!(s.shutdown(Shutdown::Write));
assert!(s.write(&[0]).is_err()); assert!(s.write(&[0]).is_err());
t!(s.shutdown(Shutdown::Read)); t!(s.shutdown(Shutdown::Read));
assert_eq!(s.read(&mut b), Ok(0)); assert_eq!(s.read(&mut b).unwrap(), 0);
// closing should affect previous handles // closing should affect previous handles
assert!(s2.write(&[0]).is_err()); assert!(s2.write(&[0]).is_err());
assert_eq!(s2.read(&mut b), Ok(0)); assert_eq!(s2.read(&mut b).unwrap(), 0);
// closing should affect new handles // closing should affect new handles
let mut s3 = t!(s.try_clone()); let mut s3 = t!(s.try_clone());
assert!(s3.write(&[0]).is_err()); assert!(s3.write(&[0]).is_err());
assert_eq!(s3.read(&mut b), Ok(0)); assert_eq!(s3.read(&mut b).unwrap(), 0);
// make sure these don't die // make sure these don't die
let _ = s2.shutdown(Shutdown::Read); let _ = s2.shutdown(Shutdown::Read);

View file

@ -212,7 +212,7 @@ mod tests {
let _t = thread::spawn(move|| { let _t = thread::spawn(move|| {
let mut buf = [0, 0]; let mut buf = [0, 0];
assert_eq!(sock2.recv_from(&mut buf), Ok((1, addr1))); assert_eq!(sock2.recv_from(&mut buf).unwrap(), (1, addr1));
assert_eq!(buf[0], 1); assert_eq!(buf[0], 1);
t!(sock2.send_to(&[2], &addr1)); t!(sock2.send_to(&[2], &addr1));
}); });
@ -228,7 +228,7 @@ mod tests {
}); });
tx1.send(()).unwrap(); tx1.send(()).unwrap();
let mut buf = [0, 0]; let mut buf = [0, 0];
assert_eq!(sock1.recv_from(&mut buf), Ok((1, addr2))); assert_eq!(sock1.recv_from(&mut buf).unwrap(), (1, addr2));
rx2.recv().unwrap(); rx2.recv().unwrap();
}) })
} }

View file

@ -576,7 +576,7 @@ mod tests {
assert!(p.is_ok()); assert!(p.is_ok());
let mut p = p.unwrap(); let mut p = p.unwrap();
assert!(p.wait().unwrap().code() == Some(1)); assert!(p.wait().unwrap().code() == Some(1));
drop(p.wait().clone()); drop(p.wait());
} }
#[cfg(all(unix, not(target_os="android")))] #[cfg(all(unix, not(target_os="android")))]

View file

@ -277,7 +277,7 @@ impl File {
fn cstr(path: &Path) -> io::Result<CString> { fn cstr(path: &Path) -> io::Result<CString> {
path.as_os_str().to_cstring().ok_or( path.as_os_str().to_cstring().ok_or(
io::Error::new(io::ErrorKind::InvalidInput, "path contained a null", None)) io::Error::new(io::ErrorKind::InvalidInput, "path contained a null"))
} }
impl FromInner<c_int> for File { impl FromInner<c_int> for File {

View file

@ -433,7 +433,7 @@ extern "system" {
TokenHandle: *mut libc::HANDLE) -> libc::BOOL; TokenHandle: *mut libc::HANDLE) -> libc::BOOL;
pub fn GetCurrentProcess() -> libc::HANDLE; pub fn GetCurrentProcess() -> libc::HANDLE;
pub fn GetStdHandle(which: libc::DWORD) -> libc::HANDLE; pub fn GetStdHandle(which: libc::DWORD) -> libc::HANDLE;
pub fn ExitProcess(uExitCode: libc::UINT) -> !; pub fn ExitProcess(uExitCode: libc::c_uint) -> !;
} }
#[link(name = "userenv")] #[link(name = "userenv")]

View file

@ -382,5 +382,5 @@ pub fn home_dir() -> Option<PathBuf> {
} }
pub fn exit(code: i32) -> ! { pub fn exit(code: i32) -> ! {
unsafe { libc::ExitProcess(code as libc::UINT) } unsafe { c::ExitProcess(code as libc::c_uint) }
} }

View file

@ -41,7 +41,7 @@ fn get(handle: libc::DWORD) -> io::Result<Output> {
Err(io::Error::last_os_error()) Err(io::Error::last_os_error())
} else if handle.is_null() { } else if handle.is_null() {
Err(io::Error::new(io::ErrorKind::Other, Err(io::Error::new(io::ErrorKind::Other,
"no stdio handle available for this process", None)) "no stdio handle available for this process"))
} else { } else {
let ret = NoClose::new(handle); let ret = NoClose::new(handle);
let mut out = 0; let mut out = 0;
@ -160,6 +160,5 @@ impl Drop for NoClose {
} }
fn invalid_encoding() -> io::Error { fn invalid_encoding() -> io::Error {
io::Error::new(io::ErrorKind::InvalidInput, "text was not valid unicode", io::Error::new(io::ErrorKind::InvalidInput, "text was not valid unicode")
None)
} }

View file

@ -15,13 +15,14 @@
use std::{fs, net}; use std::{fs, net};
fn assert_both<T: Send + Sync>() {} fn assert_both<T: Send + Sync>() {}
fn assert_send<T: Send>() {}
fn main() { fn main() {
assert_both::<fs::File>(); assert_both::<fs::File>();
assert_both::<fs::Metadata>(); assert_both::<fs::Metadata>();
assert_both::<fs::ReadDir>(); assert_both::<fs::ReadDir>();
assert_both::<fs::DirEntry>(); assert_both::<fs::DirEntry>();
assert_both::<fs::WalkDir>(); assert_send::<fs::WalkDir>();
assert_both::<fs::OpenOptions>(); assert_both::<fs::OpenOptions>();
assert_both::<fs::Permissions>(); assert_both::<fs::Permissions>();