国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

rust關(guān)于項(xiàng)目結(jié)構(gòu)包,Crate和mod和目錄的組織

這篇具有很好參考價(jià)值的文章主要介紹了rust關(guān)于項(xiàng)目結(jié)構(gòu)包,Crate和mod和目錄的組織。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

rust

最近開始學(xué)習(xí)rust語(yǔ)言。感覺這門語(yǔ)言相對(duì)java確實(shí)是難上很多。開幾個(gè)文章把遇到的問(wèn)題記錄一下

rust關(guān)于包,Crate

關(guān)于包,Crate這塊先看看官方書籍怎么說(shuō)的

crate 是 Rust 在編譯時(shí)最小的代碼單位。如果你用 rustc 而不是 cargo 來(lái)編譯一個(gè)文件(第一章我們這么做過(guò)),編譯器還是會(huì)將那個(gè)文件認(rèn)作一個(gè) crate。crate 可以包含模塊,模塊可以定義在其他文件,然后和 crate 一起編譯,我們會(huì)在接下來(lái)的章節(jié)中遇到。
crate 有兩種形式:二進(jìn)制項(xiàng)和庫(kù)。二進(jìn)制項(xiàng) 可以被編譯為可執(zhí)行程序,比如一個(gè)命令行程序或者一個(gè)服務(wù)器。它們必須有一個(gè) main 函數(shù)來(lái)定義當(dāng)程序被執(zhí)行的時(shí)候所需要做的事情。目前我們所創(chuàng)建的 crate 都是二進(jìn)制項(xiàng)。
庫(kù) 并沒(méi)有 main 函數(shù),它們也不會(huì)編譯為可執(zhí)行程序,它們提供一些諸如函數(shù)之類的東西,使其他項(xiàng)目也能使用這些東西。比如 第二章 的 rand crate 就提供了生成隨機(jī)數(shù)的東西。大多數(shù)時(shí)間 Rustaceans 說(shuō)的 crate 指的都是庫(kù),這與其他編程語(yǔ)言中 library 概念一致。
crate root 是一個(gè)源文件,Rust 編譯器以它為起始點(diǎn),并構(gòu)成你的 crate 的根模塊(我們將在 “定義模塊來(lái)控制作用域與私有性” 一節(jié)深入解讀)。
包(package)是提供一系列功能的一個(gè)或者多個(gè) crate。一個(gè)包會(huì)包含一個(gè) Cargo.toml 文件,闡述如何去構(gòu)建這些 crate。Cargo 就是一個(gè)包含構(gòu)建你代碼的二進(jìn)制項(xiàng)的包。Cargo 也包含這些二進(jìn)制項(xiàng)所依賴的庫(kù)。其他項(xiàng)目也能用 Cargo 庫(kù)來(lái)實(shí)現(xiàn)與 Cargo 命令行程序一樣的邏輯。包中可以包含至多一個(gè)庫(kù) crate(library crate)。包中可以包含任意多個(gè)二進(jìn)制 crate(binary crate),但是必須至少包含一個(gè) crate(無(wú)論是庫(kù)的還是二進(jìn)制的)

這里我個(gè)人理解包類似于java當(dāng)中maven當(dāng)中的模塊,crate root 是一個(gè)源文件,Rust 編譯器以它為起始點(diǎn),并構(gòu)成你的 crate 的根模塊。就是說(shuō)各個(gè)mod串聯(lián)的起點(diǎn),比如main.rs當(dāng)中定義。或者lib.rs庫(kù)create

mod

先看看官方教程

這里我們提供一個(gè)簡(jiǎn)單的參考,用來(lái)解釋模塊、路徑、use關(guān)鍵詞和pub關(guān)鍵詞如何在編譯器中工作,以及大部分開發(fā)者如何組織他們的代碼。我們將在本章節(jié)中舉例說(shuō)明每條規(guī)則,不過(guò)這是一個(gè)解釋模塊工作方式的良好參考。
從 crate 根節(jié)點(diǎn)開始: 當(dāng)編譯一個(gè) crate, 編譯器首先在 crate 根文件(通常,對(duì)于一個(gè)庫(kù) crate 而言是src/lib.rs,對(duì)于一個(gè)二進(jìn)制 crate 而言是src/main.rs)中尋找需要被編譯的代碼。
聲明模塊: 在 crate 根文件中,你可以聲明一個(gè)新模塊;比如,你用mod garden聲明了一個(gè)叫做garden的模塊。編譯器會(huì)在下列路徑中尋找模塊代碼:
內(nèi)聯(lián),在大括號(hào)中,當(dāng)mod garden后方不是一個(gè)分號(hào)而是一個(gè)大括號(hào) ,在文件 src/garden.rs,在文件 src/garden/mod.rs
聲明子模塊: 在除了 crate 根節(jié)點(diǎn)以外的其他文件中,你可以定義子模塊。比如,你可能在src/garden.rs中定義了mod vegetables;。編譯器會(huì)在以父模塊命名的目錄中尋找子模塊代碼:內(nèi)聯(lián),在大括號(hào)中,當(dāng)mod vegetables后方不是一個(gè)分號(hào)而是一個(gè)大括號(hào)
在文件 src/garden/vegetables.rs
在文件 src/garden/vegetables/mod.rs
模塊中的代碼路徑: 一旦一個(gè)模塊是你 crate 的一部分,你可以在隱私規(guī)則允許的前提下,從同一個(gè) crate 內(nèi)的任意地方,通過(guò)代碼路徑引用該模塊的代碼。舉例而言,一個(gè) garden vegetables 模塊下的Asparagus類型可以在crate::garden::vegetables::Asparagus被找到。
私有 vs 公用: 一個(gè)模塊里的代碼默認(rèn)對(duì)其父模塊私有。為了使一個(gè)模塊公用,應(yīng)當(dāng)在聲明時(shí)使用pub mod替代mod。為了使一個(gè)公用模塊內(nèi)部的成員公用,應(yīng)當(dāng)在聲明前使用pub。
use 關(guān)鍵字: 在一個(gè)作用域內(nèi),use關(guān)鍵字創(chuàng)建了一個(gè)成員的快捷方式,用來(lái)減少長(zhǎng)路徑的重復(fù)。在任何可以引用crate::garden::vegetables::Asparagus的作用域,你可以通過(guò) use crate::garden::vegetables::Asparagus;創(chuàng)建一個(gè)快捷方式,然后你就可以在作用域中只寫Asparagus來(lái)使用該類型。

這里我個(gè)人理解就像是java當(dāng)中的package,當(dāng)然也有很大區(qū)別。通過(guò)這些能組織項(xiàng)目中的目錄,各個(gè)package引用

舉個(gè)例子,用mvc層架構(gòu)controller包舉例

想創(chuàng)建controller目錄,首先再main.rs或者lib.rs當(dāng)中聲明mod,這里用main.rs舉例

pub mod controller;

fn main() {
    println!("hello world!");
}

然后就可以創(chuàng)建controller目錄了,并創(chuàng)建對(duì)應(yīng)的mod.js
rust關(guān)于項(xiàng)目結(jié)構(gòu)包,Crate和mod和目錄的組織,rust語(yǔ)言,rust,開發(fā)語(yǔ)言,后端,cargo
下面再controller目錄下創(chuàng)建別的rs文件可以這么做,比如創(chuàng)建user模塊的。
在controller/mod.rs當(dāng)中聲明user mod

pub mod user;

然后就可以在controller目錄下創(chuàng)建user.rs mod了
最終下來(lái)簡(jiǎn)單結(jié)構(gòu)如圖
rust關(guān)于項(xiàng)目結(jié)構(gòu)包,Crate和mod和目錄的組織,rust語(yǔ)言,rust,開發(fā)語(yǔ)言,后端,cargo
后續(xù)可以按照此方法創(chuàng)建單package下的代碼結(jié)構(gòu)了。
文章算是記錄遇到的問(wèn)題。如有不對(duì)的地方歡迎指正文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-638306.html

到了這里,關(guān)于rust關(guān)于項(xiàng)目結(jié)構(gòu)包,Crate和mod和目錄的組織的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 各類Python項(xiàng)目的項(xiàng)目結(jié)構(gòu)及代碼組織最佳實(shí)踐

    各類Python項(xiàng)目的項(xiàng)目結(jié)構(gòu)及代碼組織最佳實(shí)踐

    1. 了解Python項(xiàng)目文件組織結(jié)構(gòu)非常重要 為什么要掌握python項(xiàng)目結(jié)構(gòu)? 優(yōu)秀的程序員都使用規(guī)范的項(xiàng)目代碼結(jié)構(gòu),了解這些好的習(xí)慣方式,有助于快速讀懂代碼 如果項(xiàng)目是幾個(gè)人合作開發(fā),好的代碼結(jié)構(gòu),便于分工,減少混亂,使項(xiàng)目開發(fā)過(guò)程更順暢。 采用規(guī)范的項(xiàng)目結(jié)構(gòu),

    2023年04月16日
    瀏覽(582)
  • rust crate.io 配置國(guó)內(nèi)源(cargo 國(guó)內(nèi)源) warning: spurious network error (2 tries remainin...

    rust crate.io 配置國(guó)內(nèi)源(cargo 國(guó)內(nèi)源) warning: spurious network error (2 tries remainin...

    rust 筆記 Crate 國(guó)內(nèi)源配置 作者 : 李俊才 (jcLee95):https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 郵箱 : 291148484@163.com 本文地址 :https://blog.csdn.net/qq_28550263/article/details/130758057 Rust 官方默認(rèn)的 Cargo 源服務(wù)器為 crates.io,其同時(shí)也是 Rust 官方的 crate 管理倉(cāng)庫(kù),但是由于官方服

    2024年02月05日
    瀏覽(22)
  • 關(guān)于AttributeError: module ‘cv2.legacy‘ has no attribute ‘TrackerCSRT_crate‘的報(bào)錯(cuò)處理

    關(guān)于AttributeError: module ‘cv2.legacy‘ has no attribute ‘TrackerCSRT_crate‘的報(bào)錯(cuò)處理

    關(guān)于AttributeError: module \\\'cv2.legacy\\\' has no attribute \\\'TrackerCSRT_crate\\\'的報(bào)錯(cuò) 當(dāng)我第一次運(yùn)行多目標(biāo)追蹤的時(shí)候,編譯器給出了這樣的一個(gè)報(bào)錯(cuò),導(dǎo)致代碼無(wú)法運(yùn)行 查看報(bào)錯(cuò)之后我發(fā)現(xiàn)是OpenCV的問(wèn)題,直接就打開查看版本以及問(wèn)題 ?兩個(gè)包以及版本其實(shí)并沒(méi)有什么問(wèn)題,但是一直出現(xiàn)

    2024年02月05日
    瀏覽(24)
  • python項(xiàng)目結(jié)構(gòu)示例(python代碼結(jié)構(gòu)、python目錄結(jié)構(gòu))與python部署結(jié)構(gòu)、python部署目錄、flask項(xiàng)目結(jié)構(gòu)、flask目錄

    myproject/ :項(xiàng)目的根目錄,也是Python包的根目錄。 myproject/__init__.py :一個(gè)空的 __init__.py 文件,用于將 myproject 目錄標(biāo)記為一個(gè)Python包。 myproject/module1.py 、 myproject/module2.py 等:項(xiàng)目的模塊文件,包含項(xiàng)目的核心代碼。 tests/ :測(cè)試目錄,包含用于測(cè)試項(xiàng)目代碼的測(cè)試文件。

    2024年02月12日
    瀏覽(100)
  • Rust :mod.rs和lib.rs中use的作用

    一、mod.rs和lib.rs mod.rs往往是把同一目錄下的n個(gè)rs文件綜合在一起的有效方式; lib.rs是一個(gè)庫(kù)或子庫(kù)層次綜合在一起的有效方式; 下面舉個(gè)實(shí)例來(lái)說(shuō)明。生成一個(gè)rusttoc本地庫(kù)(由cargo new rusttoc --lib所生成),目錄結(jié)構(gòu)如下: 其中,data.rs文件內(nèi)容如下: 其中,ffi.rs文件內(nèi)容如

    2024年02月07日
    瀏覽(20)
  • Rust 語(yǔ)言中的結(jié)構(gòu)體

    Rust 語(yǔ)言中的結(jié)構(gòu)體

    目錄 1、結(jié)構(gòu)體 2、結(jié)構(gòu)體的定義和實(shí)例化 2.1 使用字段初始化簡(jiǎn)寫語(yǔ)法 2.2 使用結(jié)構(gòu)體更新語(yǔ)法從其他實(shí)例創(chuàng)建實(shí)例 2.3?沒(méi)有命名字段的元組結(jié)構(gòu)體 2.4 沒(méi)有任何字段的類單元結(jié)構(gòu)體 2.5 結(jié)構(gòu)體示例程序 3、方法 3.1 關(guān)聯(lián)函數(shù) 3.2?多個(gè) impl 塊 struct ,或者? structure ,是一個(gè)自定義

    2024年02月05日
    瀏覽(16)
  • 關(guān)于a^b%mod

    關(guān)于a^b%mod

    當(dāng)b非常大時(shí),我們不能夠直接對(duì)b取模,即a^(b%mod)!=a^b%mod,可以利用歐拉定理 ?參考博客:HDU-4549(矩陣快速冪+歐拉定理)_薄層的博客-CSDN博客

    2024年02月15日
    瀏覽(14)
  • 【Java工程目錄結(jié)構(gòu)】項(xiàng)目結(jié)構(gòu)和模塊結(jié)構(gòu)

    結(jié)構(gòu)劃分有利于管理文件。 代碼要放在 源文件文件夾(src/main/java)下才能正確編譯和執(zhí)行。 一個(gè)項(xiàng)目project,包含任意個(gè)模塊module。一個(gè)模塊包含任意個(gè)包package。 包是類的容器,用于分隔類名空間。 包的名字有層次關(guān)系,各層之間以點(diǎn)分隔:頂級(jí)域名.公司域名. 項(xiàng)目名.

    2024年01月21日
    瀏覽(28)
  • 【Microsoft Edge】關(guān)于 Microsoft Edge 瀏覽器多版本安裝目錄結(jié)構(gòu)的測(cè)試分析

    【Microsoft Edge】關(guān)于 Microsoft Edge 瀏覽器多版本安裝目錄結(jié)構(gòu)的測(cè)試分析

    最近(2023年4月12日 ~ 2023年4月13日) 筆者重裝了 Win10 系統(tǒng),選擇的 Windows 10 企業(yè)版 2021 LTSC 版本鏡像,安裝后發(fā)現(xiàn)自帶的 Edge 瀏覽器版本過(guò)低,且可執(zhí)行程序的原始文件名是 miedge ,而非之前使用的 msedge 。第一次打開時(shí)默認(rèn)還打開了hao123,且主頁(yè)設(shè)置了一個(gè) baidu 的插件,所

    2024年02月09日
    瀏覽(91)
  • vue項(xiàng)目結(jié)構(gòu)目錄介紹

    vue項(xiàng)目結(jié)構(gòu)目錄介紹

    build 文件夾 及 子目錄 這里面是一些webpack的配置,主要用于項(xiàng)目打包時(shí)的一些設(shè)置。這里不去更詳細(xì)的深入,相關(guān)的文件及配置會(huì)在后面用到時(shí)在詳細(xì)的介紹。 config 文件 及 子目錄 這個(gè)文件夾里裝的是整個(gè)項(xiàng)目 開發(fā)運(yùn)行時(shí)的一些配置,比如npm run dev 時(shí) 項(xiàng)目的啟動(dòng)端口 之類

    2024年02月05日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包