2014-12-14 12 views
6

, ben Bir dosyanın içeriğini Rust olarak string olarak almak için daha kolay bir yol? Bir süredir Rust içine benim ilk dalış gibi

bir temizleyici var mı (şu anda sadece olsa dışarı yazdırdığımı) daha sonra işlenmek üzere, bir dizeye bir dosyanın içeriğini dökümü için kod yazmaya başladı Bunu şu an yaptığımdan daha mı?

use std::io::prelude::*; 
use std::fs::File; 

fn main() { 
    let mut file = File::open("/etc/hosts").expect("Unable to open the file"); 
    let mut contents = String::new(); 
    file.read_to_string(&mut contents).expect("Unable to read the file"); 
    println!("{}", contents); 
} 

: Ben bu konuda yol çok ayrıntılı olarak yaşıyorum ama

use std::io; 
use std::io::File; 
use std::os; 
use std::str; 

fn main() { 
    println!("meh"); 
    let filename = &os::args()[1]; 
    let contents = match File::open(&Path::new(filename)).read_to_end() { 
     Ok(s) => str::from_utf8(s.as_slice()).expect("this shouldn't happen").to_string(), 
     Err(e) => "".to_string(), 
    }; 
    println!("ugh {}", contents.to_string()); 
} 

cevap

13

Read::read_to_string Bildiğim en kısa olduğu temizlemek için herhangi bir iyi bir yol göremiyorum gibi görünüyor Başarısızlık vakalarını düşünmek, Rust'un öne ve merkeze yerleştirmeyi sevdiği bir şeydir.

+0

Üretim kodunda 'unwrap' kullanılmamalıdır. 'Eşleştir', 'map' veya 've_then'. – Hauleth

+0

@hauleth Bu çok katı bir bildiri. Panik, 'ulaşılamaz' veya 'assert' için aynı iddiayı mı yapıyorsunuz? Bunların hepsi bir iplik paniği oluşturur. Üretim kodunda panik yapmanın birçok nedeni var. Spesifik olarak, kodlama ** mantık hataları ** * ile karşılaşıldıklarında paniğe neden olması gerektiğini belirtmek isterim. Tabii ki, bu örnek üretim kodu değildir ve taşıma hata durumları, uygulamanın kullanıcısına ve bu uygulamanın içeriğine bağlıdır. – Shepmaster

+0

IMHO evet. Yapabiliyorsan hepsinden kaçınmalısın. Şahsen bunları sadece paniklemeyeceğinden emin olduğumda kullanırım (örn. 'ThePrimitive'). Panik yapmam gerekirse, o zaman "ana" de olmalı. Kütüphanelerde 'Sonuç 'veya' Seçenek 'seçeneğini döndürmeli ya da ölümcül değilse' log' sandığını kullanmalısınız. – Hauleth

İlgili konular