Skip to main content

Rust không import

Mọi ngôn ngữ lập trình hiện đại đều có cơ chế để dùng lại code. C có #include<stdio.h> thì Python, Go, Java có import. Rust không như thế, không có import, không cần import.

Rust dùng thư viện bằng path đầy đủ

Không cần import. Ví dụ sử dụng các function trong thư viện std::fs:

fn main() {
    std::fs::create_dir_all("a/b/c/d").unwrap();
    std::fs::write("a/file", "Hello").expect("Cannot write file");

    let rd = std::fs::read_dir("a").unwrap();
    for i in rd {
        let i = i.unwrap();
        if i.path().is_dir() {
            println!("Directory {}", i.file_name().to_string_lossy());
        } else if i.path().is_file() {
            println!("File {}", i.file_name().to_string_lossy());
        }
    }
}

Code tạo thư mục a chứa thư mục b chứa thư mục c chứa thư mục d, tương tự lệnh mkdir -p a/b/c/d trên Linux. Sau đó ghi ra 1 file text tên "file" trong thư mục "a" dòng chữ "Hello". Liệt kê các file trong thư mục "a" và in ra màn hình đâu là thư mục đâu là file.

Output:

File file
Directory b

Rust crate, module

std::fs::create_dir_allfull path tới function create_dir_all.

std là 1 crate /kreɪt/ - đơn vị 1 "library" trong Rust. Xem các crates tại https://crates.io/

fs là 1 module - thường tương ứng với 1 file hay 1 thư mục, xem các module trong crate std tại https://doc.rust-lang.org/std/index.html

Rust có thể gọi function create_dir_all trong fs trong std mà không cần import.

Nhưng gõ std::fs::create_dir_all dài, nên Rust có use dùng để tạo "shortcut".

use std::fs::create_dir_all;
// use std::fs::{create_dir_all, write}; viết ngắn gọn thay vì viết use cho từng function.
// use std::fs::{*}; tất cả
fn main() {
    create_dir_all("a/b/c/d").unwrap();
}

tương tự Python from math import sqrt; sqrt(4). hay from math import *; sqrt(4)

Nếu viết use std::fs thì sẽ chỉ cần gõ fs::create_dir_all là đủ. Đây là "best practice" để vừa gõ ngắn hơn, vừa biết create_dir_all thuộc về fs.

use std::fs;

fn main() {
    fs::create_dir_all("a/b/c/d").unwrap();
    fs::write("a/file", "Hello").expect("Cannot write file");

    let rd = fs::read_dir("a").unwrap();
    for i in rd {
        let i = i.unwrap();
        if i.path().is_dir() {
            println!("Directory {}", i.file_name().to_string_lossy());
        } else if i.path().is_file() {
            println!("File {}", i.file_name().to_string_lossy());
        }
    }
}

Kết luận

Rust không import, chỉ use để tạo shortcut.

Hết

Tham khảo

Ủng hộ tác giả 🍺

Comments

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG