我很惊讶我似乎无法浏览 rust 的文档来找到任何描述 io 的案例,有人可以向我解释一下如何使用基本 io 来让用户输入比如说一个整数吗?也许在该被诅咒的文档中可以在哪里找到 io 详细信息?谢谢
问问题
1789 次
2 回答
8
回答你关于int
s 的问题。(所有这些类型注释都是可选的,我已经将每一步都分开了。)
use std::io;
fn main() {
let mut stdin = io::stdin();
let err_line: io::IoResult<String> = stdin.read_line();
let line: String = err_line.unwrap();
let line_no_extra_whitespace: &str = line.as_slice().trim();
let possible_number: Option<int> = from_str(line_no_extra_whitespace);
match possible_number {
Some(n) => println!("double your number is {}", 2 * n),
None => println!("please type an integer")
}
}
文档(注意,文档中的几乎所有类型都是可点击的,带您进入包含更多描述/列出您可以使用它们做什么的页面):
stdin
.read_line
IoResult
(注意这只是重命名类型,也就是说,它实际上是一个Result
.)String
.unwrap
from_str
(以及FromStr
它包装的特征。).as_slice
(您可以String
在实施者列表中看到。).trim
Option
(None
并且Some
是 的两个变体Option
)println!
另外,请注意,可以通过页面顶部的搜索框搜索文档,例如搜索 "stdin"。(您可以在任何页面上按“s”跳转到搜索框,准备输入。)
您可能还对这个关于分配的堆和字符串 slice之间区别的答案感兴趣。String
&str
其他人指出了备忘单、文档的入口点std
和特定于 IO 的std::io
. 还有其他地方有很好的信息,比如std::result
文本,用于处理来自 IO 操作的返回值(记住IoResult
是 a Result
,因此支持所有这些操作),并且 irc.mozilla.org 上的#rust IRC 频道(网络客户端)通常有多人愿意提供帮助。
于 2014-06-17T11:28:24.167 回答
2
来自http://doc.rust-lang.org/std/index.html:
io 模块中定义了常见的 I/O 类型,包括文件、TCP、UPD、管道、Unix 域套接字、计时器和进程生成。
并从该文档链接: http: //doc.rust-lang.org/std/io/
读:
use std::io;
for line in io::stdin().lines() {
print!("{}", line.unwrap());
}
于 2014-06-17T02:33:56.777 回答