当前位置: 首页 > news >正文

桂林做手机网站设计网站建设和网页设计的关系

桂林做手机网站设计,网站建设和网页设计的关系,廊坊网站建设系统,婚恋网站女孩子做美容文章目录 Rust 学习笔记(卷二)八、工程1. package 和 cratepackage 总览包根(crate root) 2. 模块初识模块单个源文件中的嵌套模块使用具有层级结构的源文件构造嵌套模块 3. 文档4. 使用第三方包5. 打包自己的包 九、标准库十、多…

文章目录

  • Rust 学习笔记(卷二)
    • 八、工程
      • 1. package 和 crate
        • package 总览
        • 包根(crate root)
      • 2. 模块
        • 初识模块
        • 单个源文件中的嵌套模块
        • 使用具有层级结构的源文件构造嵌套模块
      • 3. 文档
      • 4. 使用第三方包
      • 5. 打包自己的包
    • 九、标准库
    • 十、多线程的并发编程
    • 十一、“不安全”编程
        • unsafe 代码块
        • 全局变量与静态变量
        • 内部可变性

Rust 学习笔记(卷二)

八、工程

相比以前的 C++,Rust 提出了包和模块的概念,使工程管理变得更加有组织。下面我们会自顶向下的介绍 Rust 中有关工程的概念。

1. package 和 crate

package 总览

Rust 工程管理中,最大的概念是 package,其次是 crate。Rust 的 crate 可以是一个库,也可以是一个可执行文件,而 package 的作用则是将一个或多个 crate 组织起来。

Package 是使用 Cargo.toml 文件管理的,这是我们所熟悉的,而 crate 则有组织地被放在项目文件夹中,包括:

  1. 库包。需要存在 src/lib.rs 源文件。包名与项目名相同。一个项目只能有一个库包。
  2. 可执行文件包。需要存在 src/main.rs 源文件。包名与项目名相同。
  3. 更多可执行文件包。每个 src/bin/ 中的源文件都是一个包,包名与文件名相同。

对比 C++ 来看,package 可以看作 CMake 的 project,而 crate 可以看作 CMake 的 target。

包根(crate root)

前面提到,如果一个 package 包含唯一的库包0,则需要存在 src/lib.rs 文件;对于可执行文件包则需要存在 src/main.rs。像这种一个源文件代表一个 crate 的,我们称为包根(crate root)。

包根只是一个源文件,那多个源文件该怎么办?方法是借助模块。模块的机制允许我们将包内的代码放在多个源文件中。

2. 模块

初识模块

Rust 中,与模块相关的关键字是 mod

Rust 程序 79:mod
// src/orange.rs
pub fn hello() {println!("Hello, orange!");
}
// src/main.rs
mod orange;
use orange::hello;
fn main() {hello();
}
C++ 程序 79:module
// orange.cpp
export module orange; // 手动写明,与文件名本身无关。
import std;
namespace orange { // 手动创建命名空间,与模块无关。export void hello() {std::cout << "Hello, orange!" << std::endl;}
}
// 源.cpp
import orange;
using orange::hello;
int main() {hello();
}

关于 Rust 程序 79 的新东西有:

  1. pub 关键字。如果要使用的东西不属于自己的父模块(例如程序 79 中,orange 模块和 main 模块是兄弟,orange 模块不是 main 模块的父模块),则只能使用公开的模块,用 pub 关键字表示。这和 C++ 程序 79 中 hello 函数前的 export 关键字一样。
  2. mod 关键字。其功能是在包根所在目录查找指定名字的源文件,并将源文件中的内容视为位于同名模块中(例如程序 79 中,在包根 main.rs 同目录下找到了 orange.rs,将 orange.rs 中的内容视为位于模块 orange 中)。
  3. use 关键字。一旦模块进入视野内(例如程序 79 中通过 mod 语句在当前位置声明了一个模块,又如通过配置依赖项已经引入了外部模块),则可以使用 use 语句引入模块里的内容。使用 use 语句引入内容的可见性将在之后讲解。

与 C++ 要求必须在单独的文件里定义模块不同,Rust 中允许在同一个源文件里定义模块。所以 Rust 的模块更像是 C++ 的模块和命名空间的结合体。

Rust 程序 80:只有包根
mod orange {pub fn hello() {println!("Hello, orange!");}
}
use orange::hello;
fn main() {hello();
}
C++ 程序 80:假装是模块
import std;
namespace orange { // 只有命名空间,没有模块。void hello() {std::cout << "Hello, orange!" << std::endl;}
}
using orange::hello;
int main() {hello();
}

Rust 程序 80 中,mod 块前没有再加 pub,这是因为我们在下面使用它时已经能够看到它的完整实现了,所以没有必要再加上 pub

单个源文件中的嵌套模块

使用具有层级结构的源文件构造嵌套模块

3. 文档

4. 使用第三方包

5. 打包自己的包

九、标准库

十、多线程的并发编程

并发、异步。

十一、“不安全”编程

unsafe 代码块

全局变量与静态变量

理论上,全局变量越少越好,以防形成一盘散沙之势。然而,全局变量通常也是无法避免的,例如在使用单例设计模式时。

内部可变性

http://www.yayakq.cn/news/358329/

相关文章:

  • 雄安优秀网站建设方案网站备案登记查询
  • 网站收录变少成都一网吃尽小程序
  • 网页设计做网站中国电建成都设计院
  • 做网站法律条文一二三四影视在线观看免费视频
  • 品牌网站设计工作室免费咨询个税
  • 湖北专业网站建设南京网站建设索q.479185700
  • 社区类网站建设的例子网络空间安全论文
  • 建设网站收费明细南京江北建设有限公司
  • 安溪城乡建设局网站企业网站建设服务商
  • 网站外链建设方法京东商城网站怎么做的自适应
  • 网站开发一个支付功能要好多钱高端食品品牌排行榜前十名
  • 彩票网站开发演示网站地图怎么做、
  • 广州做创客教室的厂家网站网站建设 博贤科技
  • 一级A做爰片安全网站阿里云免费域名注册
  • 写作网站保底和全勤的区别百度联盟广告点击技巧
  • 店面设计费入什么科目广东seo推广贵不贵
  • 江西建设职业技术学院招生信息网站网站正在建设中 html源码
  • 如何自己做网站建设创建网站得花多少钱
  • 网站代理备案网站开发设计总结及心得体会
  • 魏县网络营销推广方法丽水百度seo
  • 诸暨网站制作消息提示怎么做网站
  • 合肥做拼拼团网站的公司wordpress 一键生成
  • 东丽网站建设公司wordpress academy
  • 网站建设有微信的关系做摄影网站的目的是什么
  • 怎么做网站收录装修设计网站哪个平台最好
  • 江苏公司网站建设公司网站seo诊断书
  • 自己网站上做淘宝搜索引擎无锡网站建设 君通科技
  • 厦工品牌网站设计线上广告平台
  • 建设银行网站怎么登陆不了了维护公司
  • 国外做外贸哪个网站好些一个域名可以建几个网站