Skip to content
Học Công nghệ Thông tin thực chiếnHọc Công nghệ Thông tin thực chiến
  • KIẾN THỨC
  • KÊNH YOUTUBE
  • NGƯỜI SÁNG LẬP
Học Công nghệ Thông tin thực chiếnHọc Công nghệ Thông tin thực chiến
  • KIẾN THỨC
  • KÊNH YOUTUBE
  • NGƯỜI SÁNG LẬP
Lập trình Rust

Ngôn ngữ lập trình Rust cho phép chạy mã nguồn ngôn ngữ lập trình C kiểu gì?

  • 22 Jun, 2025
  • Com 0

Ngôn ngữ lập trình Rust cho phép nhúng mã nguồn của ngôn ngữ lập trình C vào để biên dịch thành mã máy, cụ thể là thành file nhị phân để chạy.

Rust cho phép xài mã nguồn C trong nó bằng khai báo extern C.

Lấy ví dụ là các ông lập trình Rust đã viết lại coreutils bằng Rust thay cho C.

Trong mã nguồn của Rust có đoạn unsafe extern C như này:

/// This function is unsafe because it calls a C API
#[unsafe(no_mangle)]
pub unsafe extern "C" fn __stdbuf_get_stdin() -> *mut FILE {
    #[cfg(any(target_os = "macos", target_os = "freebsd"))]
    {
        unsafe extern "C" {
            fn __stdinp() -> *mut FILE;
        }
        unsafe { __stdinp() }
    }

    #[cfg(not(any(target_os = "macos", target_os = "freebsd")))]
    {
        unsafe extern "C" {
            static mut stdin: *mut FILE;
        }
        unsafe { stdin }
    }
}

https://github.com/uutils/coreutils/blob/main/src/uu/stdbuf/src/libstdbuf/src/libstdbuf.rs

Câu hỏi dành cho các bạn thích lập trình Rust là tại sao phải nhúng mã nguồn C vào Rust trong trường hợp này.

Mời bạn coi video lập trình Rust của tôi để hiểu rõ hơn khi biên dịch Rust có nhúng mã nguồn C sẽ cần phải làm gì.

Tags:
Lập trình CLập trình RustLập trình Rust thực chiếnNgôn ngữ lập trình CNgôn ngữ lập trình RustRust unsafe extern Cunsafe extern C
Share on:
Azure Linux mã hóa mật khẩu bằng thuật toán băm nào?

Search

Categories

  • An toàn thông tin thực chiến (16)
  • Cơ sở dữ liệu thực chiến (6)
  • Công nghệ ảo hóa máy chủ (1)
  • Công nghệ lõi Công nghệ Thông tin (1)
  • Công nghệ lõi Linux (8)
  • Công nghệ phần mềm thực chiến (7)
  • Đại số tổ hợp (1)
  • DevOps thực chiến (2)
  • Điện toán đám mây thực chiến (3)
  • Docker container (3)
  • Giải tích tổ hợp (1)
  • Hệ điều hành Linux thực chiến (8)
  • Học công nghệ thông tin thực chiến (1)
  • Lập trình an toàn thông tin (1)
  • Lập trình Rust (1)
  • Lập trình thực chiến (2)
  • Linux thực chiến (2)
  • Olympic Toán 30 tháng 4 (1)
  • Oracle DBA (11)
  • Podman container (3)
  • Tích hợp hệ thống công nghệ thông tin thực chiến (1)

Tags

Anaconda installer (3) Biên dịch Linux kernel (4) Biên dịch nhân Linux (4) Băm mật khẩu (2) Container-Optimized OS (3) Container Operating System (4) Container OS (4) Cài Oracle 21c (3) Công nghệ lõi Linux (3) Công nghệ phần mềm thực chiến (3) Fedora CoreOS (3) Giao thức SMB (2) Hệ điều hành Linux thực chiến (4) Học an toàn thông tin (4) Linux hugepages (3) Linux kernel (3) Linux PAM (5) Linux security (8) Lập trình MySQL (2) Lập trình MySQL thực chiến (2) MySQL database developer (3) MySQL DBA (3) netplan (3) OpenSSH server (2) Oracle 21c (2) Oracle OUI (5) Oracle Universal Installer (5) Password hashing (4) Password hashing algorithm (6) Quản trị MySQL (3) Red Hat Enterprise Linux 10 (2) Samba Active Directory Domain Controller (4) Samba AD DC (5) Samba AD Domain Controller (5) SMB protocol (3) Thuật toán băm mật khẩu (9) Thuật toán MD5 (3) Thuật toán SHA512 (5) Thuật toán yescrypt (4) Tối ưu cơ sở dữ liệu MySQL (4) Tối ưu Linux server (2) Tối ưu MySQL (4) Ubuntu netplan (3) vmlinuz (3) Điện toán đám mây (3)

Học Công nghệ Thông tin chuyên sâu
Tiết kiệm tiền bạc, thời gian, công sức cho người học
© Copyright 2024 CâyTreOS – Học IT thế kỉ 21

Học Công nghệ Thông tin thực chiếnHọc Công nghệ Thông tin thực chiến