6
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());
}
Üretim kodunda 'unwrap' kullanılmamalıdır. 'Eşleştir', 'map' veya 've_then'. – Hauleth
@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
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