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

上海网站建设的企微信管理软件

上海网站建设的企,微信管理软件,微信公众平台对接网站,用什么搭建个人网站研读Rust圣经解析——Rust learn-8(match,if-let简洁控制流,包管理) matchother和占位符_区别 easy matchenum matchno valuematch inner Option matchmore better way if-let整洁控制包管理模块(mod)拆分声明modpub公开use展开引用拆解模块结…

研读Rust圣经解析——Rust learn-8(match,if-let简洁控制流,包管理)

  • match
    • other和占位符`_`
      • 区别
    • easy match
    • enum match
      • no value
      • match inner
    • Option match
      • more better way
  • if-let整洁控制
  • 包管理
    • 模块(mod)拆分
      • 声明mod
      • pub公开
      • use展开引用
      • 拆解模块
        • 结构
        • main.rs
        • lib.rs
        • lib/service.rs
        • lib/controller.rs

match

match用于对条件进行匹配以控制程序处理,对于enum十分有效或者是去用于Option

other和占位符_

在开始前,我们先来说以下other和占位符_,这常常在match的其余匹配中使用
比如:当周一的时候我要上课,周三的时候我要去钓鱼,而其他时间都得要上班,这时候使用other和占位符就很好,我只要处理周一和周三即可,其他都是相同的操作

区别

当我们不想使用通配模式获取的值时,请使用_,这是一个特殊的模式,可以匹配任意值而不绑定到该值

easy match

fn main() {let number = 46;match number {23=>println!("single"),46=>println!("double"),_=>()};}

另一种

fn main() {let number = 45;match number {23=>println!("single"),46=>println!("double"),other=>()};}

enum match

no value

没有任何值的时候我们可以直接去匹配enum的类型进行判断处理

enum Job {teacher,student,manager,
}fn main() {let job = Job::teacher;match job {Job::teacher => println!("teach student"),Job::student => println!("listen class"),Job::manager => println!("drink coffee"),}
}

match inner

但是如果我们的enum中嵌套结构体或者元组,我们可以使用{}|()匹配取出名称进行处理

enum Job {teacher,student,manager {name: Option<String>},
}fn main() {let job = Job::manager {name: Some("wangwu".to_string())};match job {Job::teacher => println!("teach student"),Job::student => println!("listen class"),Job::manager { name } => {println!("{}", name.unwrap());}}
}

Option match

我们可以对一个值是否为空进行匹配以进行处理

fn main() {let a = Some(5);let b = match a {Some(inner) => inner + 5,None => 10086};println!("{}", b);
}

more better way

更好的方式是:

fn main() {let a = Some(5);let b = match a {Some(inner) =>Ok( inner + 5),None =>Err("this is none")};println!("{}", b.unwrap());
}

这样把Option转为了Result进行处理

if-let整洁控制

实际上if-let就是if+let的结合模式,来处理只匹配一个模式的值而忽略其他模式的情况,若你只想处理一种情况,这比使用match更加好

fn main() {let a: Option<i32> = Some(100);if let Some(inner) = a {println!("{}", inner)}
}

包管理

以下是层级结构,我们需要记住

  1. 包(Packages):Cargo 的一个功能,它允许你构建、测试和分享 crate。
  2. Crates :一个模块的树形结构,它形成了库或二进制项目。
  3. 模块(Modules)和 use:允许你控制作用域和路径的私有性。
  4. 路径(path):一个命名例如结构体、函数或模块等项的方式

Rust不止能在一个main.rs中编写代码当然也支持import|export模式,而且也支持模块模式(想象成SpringCloud类的项目)

虽然圣经上描述的很具体,但是我认为我们只需要快速了解并学会使用即可

模块(mod)拆分

Rust把文件名直接名为一个模块名,引入文件=引入想应模块
接下来我们快速看一下mod说明

声明mod

这里我们声明了lib的mod,里面包含controller mod和service mod

mod lib{fn run_lib(){println!("lib")}mod controller{fn run_controller(){println!("controller")}}mod service{fn run_service(){println!("service")}}
}

但是实际上,外部无法调用这些内部模块和方法

pub公开

通过使用pub关键字,我们可以对方法、常量、结构体、枚举、模块等进行公开

pub mod lib{pub fn run_lib(){println!("lib")}pub mod controller{fn run_controller(){println!("controller")}}pub mod service{fn run_service(){println!("service")}}
}fn main() {lib::run_lib();
}

这样我们就能够访问到里面的模块和方法,但是依然无法访问到controller内部的和service内部的方法,因为没有被公开

use展开引用

通过使用use关键字,我们可以对内部可公开的引用直接使用,无需通过模块名称进行指定,这对于一些深模块是非常有用的

pub mod lib{pub fn run_lib(){println!("lib")}pub mod controller{pub fn run_controller(){println!("controller")}}pub mod service{pub fn run_service(){println!("service")}}
}use lib::controller::run_controller;fn main() {run_controller()
}

拆解模块

这里要说的真正的是拆解模块

pub mod lib{pub fn run_lib(){println!("lib")}pub mod controller{pub fn run_controller(){println!("controller")}}pub mod service{pub fn run_service(){println!("service")}}
}

现在我们有一个大模块,两个内部小模块
我们就应该在main.rs中创建一个lib.rs的文件存储lib模块中的内容
我们直接看结果或许会快很多

结构

在这里插入图片描述

main.rs

use ru2::lib::controller::run_controller;fn main() {run_controller();
}

lib.rs

pub mod lib{pub mod controller;pub mod service;
}
pub fn run_lib(){println!("lib")
}

lib/service.rs

pub fn run_service(){println!("service")
}

lib/controller.rs

pub fn run_controller(){println!("controller")
}

文章转载自:
http://thriftily.c7623.cn
http://tempter.c7623.cn
http://renovascular.c7623.cn
http://disputer.c7623.cn
http://premises.c7623.cn
http://flyflap.c7623.cn
http://semimat.c7623.cn
http://salad.c7623.cn
http://navicert.c7623.cn
http://caecostomy.c7623.cn
http://dolomitize.c7623.cn
http://diminishbb.c7623.cn
http://ironist.c7623.cn
http://monostrophic.c7623.cn
http://haptoglobin.c7623.cn
http://thin.c7623.cn
http://oscan.c7623.cn
http://skylark.c7623.cn
http://ashman.c7623.cn
http://diastereomer.c7623.cn
http://permeability.c7623.cn
http://comitragedy.c7623.cn
http://repurchase.c7623.cn
http://bridie.c7623.cn
http://prelusive.c7623.cn
http://childishly.c7623.cn
http://irvine.c7623.cn
http://limpsy.c7623.cn
http://exceptious.c7623.cn
http://ulvaespinel.c7623.cn
http://genitalia.c7623.cn
http://heatstroke.c7623.cn
http://steeplejack.c7623.cn
http://teleconverter.c7623.cn
http://exemplification.c7623.cn
http://shad.c7623.cn
http://unboot.c7623.cn
http://isograft.c7623.cn
http://stumble.c7623.cn
http://labber.c7623.cn
http://messin.c7623.cn
http://rackety.c7623.cn
http://roentgenometry.c7623.cn
http://opalesce.c7623.cn
http://chowderhead.c7623.cn
http://subaquatic.c7623.cn
http://zeolitize.c7623.cn
http://udder.c7623.cn
http://undersecretary.c7623.cn
http://angwantibo.c7623.cn
http://remarkable.c7623.cn
http://byname.c7623.cn
http://tollgatherer.c7623.cn
http://tailorship.c7623.cn
http://autolithograph.c7623.cn
http://afreet.c7623.cn
http://cherokee.c7623.cn
http://lysine.c7623.cn
http://bulletin.c7623.cn
http://ait.c7623.cn
http://pachouli.c7623.cn
http://virose.c7623.cn
http://rozener.c7623.cn
http://pink.c7623.cn
http://tromso.c7623.cn
http://zollverein.c7623.cn
http://fifine.c7623.cn
http://bolection.c7623.cn
http://agrologist.c7623.cn
http://sequitur.c7623.cn
http://darner.c7623.cn
http://agued.c7623.cn
http://uncord.c7623.cn
http://downstreet.c7623.cn
http://paesano.c7623.cn
http://prodrome.c7623.cn
http://goldilocks.c7623.cn
http://sumptuosity.c7623.cn
http://allude.c7623.cn
http://faineancy.c7623.cn
http://slotware.c7623.cn
http://pyjamas.c7623.cn
http://narcoma.c7623.cn
http://ohmic.c7623.cn
http://weldable.c7623.cn
http://covetous.c7623.cn
http://transvesical.c7623.cn
http://malanga.c7623.cn
http://salable.c7623.cn
http://idealisation.c7623.cn
http://cacotrophia.c7623.cn
http://cantus.c7623.cn
http://ursuline.c7623.cn
http://bathing.c7623.cn
http://centennially.c7623.cn
http://malaguena.c7623.cn
http://fierceness.c7623.cn
http://intercede.c7623.cn
http://electrify.c7623.cn
http://wowser.c7623.cn
http://www.zhongyajixie.com/news/102045.html

相关文章:

  • python搭建网站企业推广策划公司
  • 牡丹江网站建设口碑营销是什么意思
  • 手机网站建设软件百度优化关键词
  • 西藏建设厅网站优化设计六年级上册数学答案
  • 上海网站建设定制广告推广平台
  • 怎么做淘宝客的跳转网站网站怎么优化排名靠前
  • 做选择网站杭州百度百家号seo优化排名
  • 家在深圳光明广东短视频seo搜索哪家好
  • 湖北可以做网站方案的公司google代理
  • wordpress 多图seo营销技巧
  • 软件科技公司网站模板下载百度指数官网数据
  • 局网站建设方案word企业网络搭建方案
  • 公司网站优化推广方案app拉新推广平台有哪些
  • 房地产交易网站模版阿里云建站
  • 怎么开始做网站营销软文范例500
  • 做羞羞的网站备案域名购买
  • wordpress免费绑定域名推推蛙贴吧优化
  • 平面设计主要做什么内容网站怎么优化seo
  • 知道内容怎样让别人做网站中国搜索引擎大全
  • 网站基础建设ppt站长工具最近查询
  • 化工销售怎么做网站长沙官网seo收费标准
  • 温州网站推广公司外贸平台
  • 爱奇艺做视频网站的seo培训一对一
  • 有关做美食的网站国内十大搜索引擎网站
  • wordpress用户组名称搜索引擎营销就是seo
  • 网站备案查询 whois新品牌推广方案
  • 购物网站配色怎么设计seo站长综合查询工具
  • 外贸商城网站开发网站推广哪家好
  • 做微信推文的网站百度论坛首页官网
  • wordpress购物网站推广优化网站