Unit testing 在字符串上创建读取流

Unit testing 在字符串上创建读取流,unit-testing,rust,Unit Testing,Rust,我有一个函数,它接受一个输入流,处理它的数据,然后返回一些东西,基本上是一个更复杂的版本: fn read_number_from_stream(input: &mut io::BufRead) -> io::Result<u32> { // code that does something useful here Ok(0) } 如何实现从字符串读取?较旧版本的Rust显然提供了std::io::mem::MemReader,但整个std::io::mem模

我有一个函数,它接受一个输入流,处理它的数据,然后返回一些东西,基本上是一个更复杂的版本:

fn read_number_from_stream(input: &mut io::BufRead) -> io::Result<u32> {
  // code that does something useful here
  Ok(0)
}

如何实现从字符串读取?较旧版本的Rust显然提供了
std::io::mem::MemReader
,但整个
std::io::mem
模块似乎在较新版本的Rust中消失了(我使用的是不稳定的1.5分支)。

每个特性的文档都列出了可用的实现。我们可以看到,
&'a[u8]
(一段字节)实现了
BufRead
。我们可以从字符串中获取一个字节片段,并将该片段的可变引用传递给
read\u number\u from\u stream

use std::io;

fn read_number_from_stream(input: &mut io::BufRead) -> io::Result<u32> {
    // code that does something useful here
    Ok(0)
}

fn read_from_string(s: &str) -> &[u8] {
    s.as_bytes()
}

fn main() {
    let mut test_input = read_from_string("0\n");
    read_number_from_stream(&mut test_input);
}
use std::io;

fn read_number_from_stream(input: &mut io::BufRead) -> io::Result<u32> {
    // code that does something useful here
    Ok(0)
}

fn read_from_string(s: &str) -> &[u8] {
    s.as_bytes()
}

fn main() {
    let mut test_input = read_from_string("0\n");
    read_number_from_stream(&mut test_input);
}
fn main() {
    let mut test_input = b"0\n" as &[u8];
    read_number_from_stream(&mut test_input);
}