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

服务网站百度一下移动版首页

服务网站,百度一下移动版首页,网站备案 新闻审批号,微信运营环境加载失败怎么办rust 最近开始学习rust语言。感觉这门语言相对java确实是难上很多。开几个文章把遇到的问题记录一下 rust关于包,Crate 关于包,Crate这块先看看官方书籍怎么说的 crate 是 Rust 在编译时最小的代码单位。如果你用 rustc 而不是 cargo 来编译一个文件…

rust

最近开始学习rust语言。感觉这门语言相对java确实是难上很多。开几个文章把遇到的问题记录一下

rust关于包,Crate

关于包,Crate这块先看看官方书籍怎么说的

crate 是 Rust 在编译时最小的代码单位。如果你用 rustc 而不是 cargo 来编译一个文件(第一章我们这么做过),编译器还是会将那个文件认作一个 crate。crate 可以包含模块,模块可以定义在其他文件,然后和 crate 一起编译,我们会在接下来的章节中遇到。

crate 有两种形式:二进制项和库。二进制项 可以被编译为可执行程序,比如一个命令行程序或者一个服务器。它们必须有一个 main 函数来定义当程序被执行的时候所需要做的事情。目前我们所创建的 crate 都是二进制项。

库 并没有 main 函数,它们也不会编译为可执行程序,它们提供一些诸如函数之类的东西,使其他项目也能使用这些东西。比如 第二章 的 rand crate 就提供了生成随机数的东西。大多数时间 Rustaceans 说的 crate 指的都是库,这与其他编程语言中 library 概念一致。

crate root 是一个源文件,Rust 编译器以它为起始点,并构成你的 crate 的根模块(我们将在 “定义模块来控制作用域与私有性” 一节深入解读)。

包(package)是提供一系列功能的一个或者多个 crate。一个包会包含一个 Cargo.toml 文件,阐述如何去构建这些 crate。Cargo 就是一个包含构建你代码的二进制项的包。Cargo 也包含这些二进制项所依赖的库。其他项目也能用 Cargo 库来实现与 Cargo 命令行程序一样的逻辑。包中可以包含至多一个库 crate(library crate)。包中可以包含任意多个二进制 crate(binary crate),但是必须至少包含一个 crate(无论是库的还是二进制的)

这里我个人理解包类似于java当中maven当中的模块,crate root 是一个源文件,Rust 编译器以它为起始点,并构成你的 crate 的根模块。就是说各个mod串联的起点,比如main.rs当中定义。或者lib.rs库create

mod

先看看官方教程

这里我们提供一个简单的参考,用来解释模块、路径、use关键词和pub关键词如何在编译器中工作,以及大部分开发者如何组织他们的代码。我们将在本章节中举例说明每条规则,不过这是一个解释模块工作方式的良好参考。

从 crate 根节点开始: 当编译一个 crate, 编译器首先在 crate 根文件(通常,对于一个库 crate 而言是src/lib.rs,对于一个二进制 crate 而言是src/main.rs)中寻找需要被编译的代码。

声明模块: 在 crate 根文件中,你可以声明一个新模块;比如,你用mod garden声明了一个叫做garden的模块。编译器会在下列路径中寻找模块代码:

内联,在大括号中,当mod garden后方不是一个分号而是一个大括号 ,在文件 src/garden.rs,在文件 src/garden/mod.rs

声明子模块: 在除了 crate 根节点以外的其他文件中,你可以定义子模块。比如,你可能在src/garden.rs中定义了mod vegetables;。编译器会在以父模块命名的目录中寻找子模块代码:内联,在大括号中,当mod vegetables后方不是一个分号而是一个大括号

在文件 src/garden/vegetables.rs

在文件 src/garden/vegetables/mod.rs

模块中的代码路径: 一旦一个模块是你 crate 的一部分,你可以在隐私规则允许的前提下,从同一个 crate 内的任意地方,通过代码路径引用该模块的代码。举例而言,一个 garden vegetables 模块下的Asparagus类型可以在crate::garden::vegetables::Asparagus被找到。

私有 vs 公用: 一个模块里的代码默认对其父模块私有。为了使一个模块公用,应当在声明时使用pub mod替代mod。为了使一个公用模块内部的成员公用,应当在声明前使用pub。

use 关键字: 在一个作用域内,use关键字创建了一个成员的快捷方式,用来减少长路径的重复。在任何可以引用crate::garden::vegetables::Asparagus的作用域,你可以通过 use crate::garden::vegetables::Asparagus;创建一个快捷方式,然后你就可以在作用域中只写Asparagus来使用该类型。

这里我个人理解就像是java当中的package,当然也有很大区别。通过这些能组织项目中的目录,各个package引用

举个例子,用mvc层架构controller包举例

想创建controller目录,首先再main.rs或者lib.rs当中声明mod,这里用main.rs举例

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

然后就可以创建controller目录了,并创建对应的mod.js
在这里插入图片描述
下面再controller目录下创建别的rs文件可以这么做,比如创建user模块的。
在controller/mod.rs当中声明user mod

pub mod user;

然后就可以在controller目录下创建user.rs mod了
最终下来简单结构如图
在这里插入图片描述
后续可以按照此方法创建单package下的代码结构了。
文章算是记录遇到的问题。如有不对的地方欢迎指正

http://www.bjxfkj.com.cn/article/103667.html

相关文章:

  • 深圳英文网站建设广州网站seo推广
  • 电脑网站与手机的区别在线一键生成网页
  • 真实的装修公司win10优化大师好用吗
  • 手机网站制作视频教程软文是什么文章
  • 如何做网站logo 设置平滑公司推广咨询
  • 电子商务网站网站建设我想做app推广代理
  • 怎么做触屏版网站世界足球排名
  • wordpress慢吗惠州seo排名收费
  • 日照招聘网seo站内优化技巧
  • 优质的南昌网站设计seo关键词优化案例
  • 做旅游攻略的网站企业网站优化的三层含义
  • 青岛学校论坛网站建设网络平台怎么推广
  • 北京网站建设上北京九五至尊网络灰色seo关键词排名
  • 网站的二级目录是什么长沙seo网站优化公司
  • 网站设计原则今日重大国际新闻军事
  • 网站建设案例要多少钱网站流量统计分析
  • oa网站建设推广网站推广渠道
  • wordpress多选展示表单昆明网络推广优化
  • 网站备案完才能建站吗网站结构有哪几种
  • 任务网站(做任务学技能的)百度推广代理开户
  • 湖南大钧工程建设有限公司网站杭州优化公司多少钱
  • 北京网站建设在线新网站seo外包
  • 高中数学 wordpress搜索引擎优化案例分析
  • 重庆企业网站推广代理2024年阳性什么症状
  • 北京做网站建设公司seo文案范例
  • git怎么做隐私政策网站免费行情软件网站下载
  • 网站建设规划需要考虑百度推广app
  • 深圳分销网站制作火星时代教育培训机构学费多少
  • 动态网站开发吧windows系统优化软件
  • 南京宜电的网站谁做的免费职业技能培训网站