2015-03-23 19 views

cevap

13

inceleyelim:

error: no method named `read_to_string` found for type `std::result::Result<std::fs::File, std::io::Error>` in the current scope 
    --> src/main.rs:14:14 
    | 
14 |   file.read_to_string(&mut s); 
    |    ^^^^^^^^^^^^^^ 

hata mesajı hemen hemen kalay yazıyor budur - tipi Resultdeğil yöntemi read_to_string var. Bu aslında a method on the trait Read.

File::open(&path) başarısız olduğundan Result var. Başarısızlık, Result tipi ile temsil edilir. Result'un ilk kısmı, başarı durumu olan Ok'dur. Diğer kısım ise Err'dur, bu da başarısızlık durumudur.

Hata durumunu bir şekilde ele almanız gerekir. Ben olur

use std::io::Read; 

derece okuma tavsiye:

let mut file = File::open(&path).expect("Unable to open"); 

Ayrıca read_to_string erişmesini kapsam içine Read getirmek gerekir: en kolay sadece expect kullanarak, başarısızlık üzerinde ölmek The Rust Programming Language aracılığıyla ve örnekleri çalışarak. Bence bu dokümanlar üst düzeydir!

+1

https://doc.rust-lang.org/std/fs/struct.File.html: Burada Dosya'nın bir read_to_string yöntemine sahip olduğunu söyler. İlk örnek kodun yaptığı gibi, neden buraya erişemiyorum? – user3918985

+1

@ user3918985 'Dosya' read_to_string işlevini sağlayan 'Read' komutunu uygular. Ben "burada" ile ne demek istemiyorum. Bu yöntemleri kapsamda kullanmak için (gösterdiğim gibi) bu özelliği kullanmanız gerekir. – Shepmaster

+0

Çok kapsamlı açıklamanız için teşekkür ederiz. – liuyanghejerry

İlgili konular