Rust 0.9——读取文件?

标签 rust rust-0.9

这是我正在尝试做的事情:将所有命令行参数作为(二进制)文件打开并从中读取字节。这里不断变化的语法不利于谷歌搜索,但这是我到目前为止发现的:

use std::io::{File, result};
use std::path::Path;
use std::os;

fn main() {
    let args = os::args();
    let mut iter = args.iter().skip(1); // skip the program name

    for file_name in iter {
        println(*file_name);
        let path = &Path::new(*file_name);
        let file = File::open(path);
    }
}

问题是:

test.rs:44:31: 44:41 error: cannot move out of dereference of & pointer
test.rs:44         let path = &Path::new(*file_name);

我在这里碰壁了,因为虽然我对 C 中的指针很满意,但我对 Rust 中不同指针类型的理解实际上是不存在的。我可以在这里做什么?

最佳答案

尝试 &Path::new(file_name.as_slice())

不幸的是,由于特征参数 Path::new()需要,如果你传递给它 ~str~[u8]它会尝试直接使用该类型。这就是你传递给 *file_name 的东西.除了你不能在 Rust 中移出指针取消引用,这就是你得到错误的原因。

通过使用 file_name.as_slice()相反(在这种情况下,相当于 (*file_name).as_slice() ,但 Rust 将为您取消引用)它将转换 ~str&str ,然后可以传递给 Path::new()没有问题。

关于Rust 0.9——读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21049820/

相关文章:

rust - 如何在 0.9 中反转字符串?

rust - 通过共享框 ptr 访问时如何使我的结构字段可变?

rust - 如何在不显示用户输入的情况下获取密码输入?

rust - 在 Cargo.toml 中使用 `not` 关键字作为条件依赖是否有效?

rust - 如何为私有(private)元素生成文档

generics - 提供基于特征类型参数的默认特征实现

rust - 如何解决传递给闭包的 &PathBuf 冲突的生命周期要求?

pattern-matching - 不再支持独特的矢量模式

rust - 克隆存储闭包的结构