4.extern关键字.rs
生活随笔
收集整理的這篇文章主要介紹了
4.extern关键字.rs
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*
在rust中有兩種用法
1.導入外部的包 extern crate mylib 。在最新的rust2018中已經可以不在聲明
2.extern "C" 目測和C語言完全一致每一個crate就是一個根模塊。如:exp, lip, lip1, lip2, lip3。
獨立的一個文件就是一個mod,文件名就是mod名;但是main.rs, lib.rs, mod.rs除外,mod.rs的模塊名就是其所在目錄的名字; 而main.rs, lib.rs 的目錄結構,如:exp/src/main.rs或 lip/src/lib.rs ;兩者的mod名分別是exp和lip。在 tests/*.rs 的每個文件是一個集成測試。當你運行 cargo test,Cargo 將編譯每個文件作為一個單獨的箱子。箱可以通過使用 extern crate <library-name> 鏈接 (導入) 您的庫,就像其他導入項一樣。一個文件夾直接包含mod.rs ,如: rust_mod_study/lip2/src/worker/mod.rs ;則 worker就是模塊名; 并且mod.rs為此模塊的入口文件,此文件夾內的其他子模塊都要在mod.rs中 pub mod 模塊名,聲明后,外部方可看到。文件和文件夾內的mod 及其內部定義的函數默認都是private的,除非pub聲明公開。
如果一個元素是私有的,那么只有本模塊內的元素以及它的子模塊可以訪問。如果一個元素是公開的,那么它上一層的模塊就有權訪問它。如果存在與文件同名的目錄, 則在該目錄下定義的模塊都是該文件的子模塊.(2018 edition有效)如:
rust_mod_study/lip3/src/caller.rs ; rust_mod_study/lip3/src/caller/callerin.rs;
特別注意,callerin這個mod必須在caller.rs中以pub mod callerin;形式聲明,否則外部看不到; 最終模塊路徑為:lip3::caller::callerin::call();rust 2018 edition 不再需要在根模塊中使用extern crate xxx;語法導入第三方包。如在文件main.rs ,
lib.rs中不再需要extern crate xxx語法導入第三方包, 如:rust_mod_study/exp/src/main.rs
中的extern crate xxx可以去掉了。只需在Cargo.toml中配置好, 然后在代碼中以模塊路徑訪問即可,
如:modx::mody::modz::fnx(); 也可以use一下,縮短路徑。
詳細請看:https://blog.csdn.net/htyu_0203_39/article/details/104849806*/*///extern crate mylib;use mylib::*;fn tt_externvc(){println!("tt_externvc");
}fn main() {indirect_access();tt_externvc();
}
?
總結
以上是生活随笔為你收集整理的4.extern关键字.rs的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3.type关键字.rs
- 下一篇: 5.注释.rs