欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Rust包和Crate超詳細講解

 更新時間:2022年12月16日 10:07:04   作者:上后左愛  
這篇文章主要介紹了Rust包管理和Crate,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧

包和crate

  • 通過相關功能進行分組和劃分不同的功能代碼, 將代碼分割成多個模塊和多個文件組織代碼, 一個包包含 多個crate 和一個可選的crate, Cargo 類似C++ 提供一個工作空間命名 類似JAVA中包空間。
  • 避免重復造輪子, 其他代碼通過公關接口進行調用。
  • 模塊系統: 包,Crates(模塊樹形結構,庫和二進制項目), 模塊, 路徑。
  • *crate 是一個二進制項/ 庫, rust編譯以crate root源文件為起點,包中包含一個Cargo.toml 描述如何構建crate.

$ cargo new my-project
     Created binary (application) `my-project` package
$ ls my-project
Cargo.toml
src
$ ls my-project/src
main.rs

Cargo 遵循一個約定 src/main.rs是一個與包同名二進制crate的根,如果包中同時包含src/main.rs, src/lib.rs 表示擁有多個與包同名的crate, 每個src/bin 文件都會被編譯成獨立的庫

模塊控制作用域與私有性

模塊能夠將庫中代碼進行分組, 提供可讀性和重用性

use 引入外部依賴, pub公有關鍵字, as關鍵字 glob運算符。

// 一個包包含其他內置函數模塊的 front_of_house
mod front_of_house {
    mod hosting {
        fn add_to_waitlist() {}
        fn seat_at_table() {}
    }
    mod serving {
        fn take_order() {}
        fn serve_order() {}
        fn take_payment() {}
    }
}
crate
 └── front_of_house
     ├── hosting
     │   ├── add_to_waitlist
     │   └── seat_at_table
     └── serving
         ├── take_order
         ├── serve_order
         └── take_payment

###模塊中路徑

  • rust如何在一個模塊中找到一個項,路徑有兩種形式, 跟著一個:: 作為分割標識符
  • 絕對路徑: 從crate根開始
  • 相對路徑 : 以self, super
mod front_of_house {
    mod hosting {
        fn add_to_waitlist() {}
    }
}
pub fn eat_at_restaurant() {
    // 絕對路徑
    crate::front_of_house::hosting::add_to_waitlist();
    // 相對路徑
    front_of_house::hosting::add_to_waitlist();
}

如上此代碼不能編譯 原因在于 hosting 在 mod的內部, 屬于私有的模塊 不能被外部調用 ,rust中默認所有項(函數、方法、結構體、枚舉、模塊和常量)都是私有的。

父模塊不能使用子模塊的所有項,但是子模塊可以,如果想要外部調用 必須的要增加 pub 關鍵字進行暴露

pub fn eat_at_restaurant() {
    // 絕對路徑
    crate::front_of_house::hosting::add_to_waitlist();
    // 相對路徑
    front_of_house::hosting::add_to_waitlist();
}

use 進行模塊引入

mod front_of_house {
    pub mod hosting {
        pub fn add_to_waitlist() {}
        fn seat_at_table() {}
    }
    mod serving {
        fn take_order() {}
        fn serve_order() {}
        fn take_payment() {}
    }
}
use crate::front_of_house::hosting;
use self::front_of_house::hosting;
pub fn eat_at_restaurant() {
    hosting::add_to_waitlist();
}

解決將兩個同類型引入同一個作用域 導致rust編譯錯誤問題 使用as 關鍵字解決此等問題

use std::fmt::Result;
use std::io::Result as IoResult;

pub use 能夠讓其他人導入他們自己的作用域

pub use crate::front_of_house::hosting

使用外部包的話需要Cargo.toml 下面增加

rand = "0.8.3"

到此這篇關于Rust包和Crate超詳細講解的文章就介紹到這了,更多相關Rust包和Crate內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • 使用vscode配置Rust運行環(huán)境全過程

    使用vscode配置Rust運行環(huán)境全過程

    VS Code對Rust有著較完備的支持,這篇文章主要給大家介紹了關于使用vscode配置Rust運行環(huán)境的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • Rust文件 launch.json作用大全

    Rust文件 launch.json作用大全

    launch.json 是 Visual Studio Code(VSCode)中的一個配置文件,主要用于配置調試器,本文給大家介紹Rust文件 launch.json 有什么用,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • 使用Rust語言編寫一個ChatGPT桌面應用示例詳解

    使用Rust語言編寫一個ChatGPT桌面應用示例詳解

    這篇文章主要介紹了如何用Rust編寫一個ChatGPT桌面應用,文中有詳細的流程介紹,對大家的學習或工作有意一定的幫助,需要的朋友可以參考下
    2023-05-05
  • Rust使用kind進行異常處理(錯誤的分類與傳遞)

    Rust使用kind進行異常處理(錯誤的分類與傳遞)

    Rust?有一套獨特的處理異常情況的機制,它并不像其它語言中的?try?機制那樣簡單,這篇文章主要介紹了Rust指南錯誤的分類與傳遞以及使用kind進行異常處理,需要的朋友可以參考下
    2022-09-09
  • C++的替代:微軟如何使用rust?

    C++的替代:微軟如何使用rust?

    這篇文章主要介紹了微軟如何使用rust的,幫助大家了解c++和rust這兩門編程語言的聯系與區(qū)別,感興趣的朋友可以了解下
    2020-09-09
  • Rust中的panic定義及觸發(fā)條件詳解

    Rust中的panic定義及觸發(fā)條件詳解

    這篇文章主要為大家介紹了Rust中的panic定義及觸發(fā)條件詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 深入理解Rust中Cargo的使用

    深入理解Rust中Cargo的使用

    本文主要介紹了深入理解Rust中Cargo的使用,Cargo簡化了項目的構建過程,提供了依賴項管理,以及一系列方便的工作流程工具,下面就來具體的介紹一下如何使用,感興趣的可以了解一下
    2024-04-04
  • 在Rust中編寫自定義Error的詳細代碼

    在Rust中編寫自定義Error的詳細代碼

    Result<T, E> 類型可以方便地用于錯誤傳導,Result<T, E>是模板類型,實例化后可以是各種類型,但 Rust 要求傳導的 Result 中的 E 是相同類型的,所以我們需要編寫自己的 Error 類型,本文給大家介紹了在Rust中編寫自定義Error的詳細代碼,需要的朋友可以參考下
    2024-01-01
  • 在Rust?web服務中使用Redis的方法

    在Rust?web服務中使用Redis的方法

    這篇文章主要介紹了在Rust?web服務中使用Redis,在這篇文章中,我們將演示如何在一個Rust?web應用程序中使用Redis,需要的朋友可以參考下
    2022-08-08
  • Rust Atomics and Locks并發(fā)基礎理解

    Rust Atomics and Locks并發(fā)基礎理解

    這篇文章主要為大家介紹了Rust Atomics and Locks并發(fā)基礎理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02

最新評論