簡體   English   中英

Rust 0.9 - 讀取文件?

[英]Rust 0.9 — Reading a file?

這就是我要做的事情:將所有命令行參數打開為(二進制)文件並從中讀取字節。 這里不斷變化的語法對谷歌搜索無效,但這是我到目前為止所知道的:

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中的指針很好,但我對生銹中不同指針類型的理解幾乎不存在。 我能在這做什么?

Try &Path::new(file_name.as_slice())

不幸的是,由於Path::new()采用的trait參數,如果你傳遞一個~str~[u8] ,它將嘗試直接使用該類型。 這就是你傳遞*file_name 除了你不能移出Rust中的指針取消引用,這就是你得到錯誤的原因。

通過使用file_name.as_slice() (在這種情況下等效於(*file_name).as_slice() ,但Rust會為你做取消引用)它會將~str轉換為&str ,然后可以傳遞給Path::new()沒有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM