तुलनात्मक रूप से नया होने के कारण, मैंने फ़ाइलों को पढ़ने और लिखने के कई तरीके देखे हैं। कई लोग बहुत गन्दा स्निपेट रखते हैं, कोई उनके ब्लॉग के लिए आया है, और मैंने (स्टैक ओवरफ्लो पर भी) पाए गए 99% उदाहरण अस्थिर बिल्ड से हैं जो अब काम नहीं करते हैं। अब जब रस्ट स्थिर है, तो फ़ाइलों को पढ़ने या लिखने के लिए एक सरल, पठनीय, गैर-पैनिक स्निपेट क्या है?
यह निकटतम है जो मैंने किसी ऐसी चीज़ के लिए प्राप्त किया है जो पाठ फ़ाइल को पढ़ने के संदर्भ में काम करता है, लेकिन यह अभी भी संकलित नहीं कर रहा है, हालांकि मैं काफी निश्चित हूं कि मैंने वह सब कुछ शामिल किया है जो मुझे होना चाहिए। यह एक स्निपेट के आधार पर है जो मुझे सभी स्थानों के Google+ पर मिला है, और केवल एक चीज जो मैंने बदली है वह यह है कि पुराना BufferedReader
अब बस है BufReader
:
use std::fs::File;
use std::io::BufReader;
use std::path::Path;
fn main() {
let path = Path::new("./textfile");
let mut file = BufReader::new(File::open(&path));
for line in file.lines() {
println!("{}", line);
}
}
संकलक शिकायत करता है:
error: the trait bound `std::result::Result<std::fs::File, std::io::Error>: std::io::Read` is not satisfied [--explain E0277]
--> src/main.rs:7:20
|>
7 |> let mut file = BufReader::new(File::open(&path));
|> ^^^^^^^^^^^^^^
note: required by `std::io::BufReader::new`
error: no method named `lines` found for type `std::io::BufReader<std::result::Result<std::fs::File, std::io::Error>>` in the current scope
--> src/main.rs:8:22
|>
8 |> for line in file.lines() {
|> ^^^^^
यह योग करने के लिए, मैं जो देख रहा हूँ वह है:
- संक्षिप्तता
- पठनीयता
- सभी संभावित त्रुटियों को कवर करता है
- घबराता नहीं है
std::io::Read
), ध्यान दें कि जंग में आपको उन लक्षणों को आयात करना होगा जो आप स्पष्ट रूप से उपयोग करने की अपेक्षा करते हैं ; इस प्रकार आप यहाँ एक याद कर रहे हैं use std::io::Read
(जो एक use std::io::{Read,BufReader}
साथ दो उपयोगों को समेटने के लिए एक हो सकता है )