Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Read và Write

Bằng cách sử dụng Read và BufRead, ta có thể đọc dữ liệu văn bản từ một mảng u8:

use std::io::{BufRead, BufReader, Read, Result};

fn count_lines<R: Read>(reader: R) -> usize {
    let buf_reader = BufReader::new(reader);
    buf_reader.lines().count()
}

fn main() -> Result<()> {
    let slice: &[u8] = b"foo\nbar\nbaz\n";
    println!("số dòng trong mảng: {}", count_lines(slice));

    let file = std::fs::File::open(std::env::current_exe()?)?;
    println!("số dòng trong file: {}", count_lines(file));
    Ok(())
}

Tương tự, Write cho phép ta ghi dữ liệu văn bản vào một mảng u8:

use std::io::{Result, Write};

fn log<W: Write>(writer: &mut W, msg: &str) -> Result<()> {
    writer.write_all(msg.as_bytes())?;
    writer.write_all("\n".as_bytes())
}

fn main() -> Result<()> {
    let mut buffer = Vec::new();
    log(&mut buffer, "Xin chào")?;
    log(&mut buffer, "World")?;
    println!("Dữ liệu đã được ghi: {:?}", buffer);
    Ok(())
}