Test fixes and rebase conflicts, round 3
This commit is contained in:
parent
50b3ecf3bc
commit
72f59732d7
18 changed files with 156 additions and 153 deletions
|
@ -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))]
|
||||||
|
|
|
@ -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")]
|
||||||
|
|
|
@ -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 }
|
||||||
|
|
|
@ -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)]
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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]);
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -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")))]
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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")]
|
||||||
|
|
|
@ -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) }
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue