[英]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.