rust 程序设计笔记(1)
hello world & rust相关工具使用
- hello world
- rustc
- rustc --version
- complie .rs program
- main()
- entry point
- all blocks wrapped by { }
- cargo
- cargo is a package manager for rust
- cmd
- cargo --version
- cargo new proj-name
- create a new rust project
- cargo.toml
- name version edition
- dependencies
- cargo build
- -release
- 模式是调试构建,会将可执行文件放在 debug 目录下
- cargo run
- compile & run
- cargo check
- 在不生成二进制文件的情况下构建项目来检查错误
- rustc
- guessing game
- 关联函数 === 类的静态方法
- crate
- rust lib
- 包含.rs文件,但不能执行
common concepts
match 表达式
- 是js中switch的健身版,提供更加强健的安全,并且不用break
- match里的case支持接受condtion
let guess: i32 = match guess.trim().parse() {
Ok(num) => num,
Err(_) => continue
};
shadowing
- rust允许重复创建同名变量
- 重复使用let
变量
- let 生命默认是不可变
- let mut 声明变量
- const 声明全局作用域有效的常量
expression-based
fn main() {
let y = {
let x = 3;
x + 1
}; println!("The value of y is: {y}");
}
- 表达式会返回值,语句不会,即使没有显示的return语句
- 上面match的 Ok(num) ⇒ num 也是这个道理
- 最后一个表达式默认就是这个block的返回值,如果加上来分号,那就是语句了
- 这一块反而有点像js的arrow function: const a = () ⇒ 1
- 如果加上分号的话,也可以用 return 来显示的返回
- 表达式会返回值,语句不会,即使没有显示的return语句
注释
- 简单注释
- 文档注释
使用if来赋值
- let x = if condition { 1 } else
循环
- keyword: loop
- 循环标签,多重嵌套循环可以给break 加上标签来表明需要跳出哪一个循环
while 循环
- 可以用loop+if+break实现相同功能
for循环
- 用于遍历数组、map等
small task:打印fibonacci数列
fn main() {
let num_n = get_n_fibonacci(13);
println!("fibonacci num n = {num_n}")
}
fn get_n_fibonacci(n: u32) -> u32 {
let mut index = n - 1;
let mut num1 = 0;
let mut num2 = 1;
while index > 0 {
index -= 1;
let new_num = num1 + num2;
num1 = num2;
num2 = new_num;
}
return num1;
}
rust 程序设计笔记(1)的更多相关文章
- js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定
js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定 addEventListener()与removeEventListener( ...
- Rust学习笔记1
这是一份不错的rust教程,目前包括4个block和4个project.全部完成后可以用rust实现一个简单的key-value存储引擎. 注意:Windows下rust貌似会遇到一些bug,强烈建议 ...
- Java Web程序设计笔记 • 【目录】
章节 内容 实践练习 Java Web程序设计作业目录(作业笔记) 第1章 Java Web程序设计笔记 • [第1章 Web应用程序] 第2章 Java Web程序设计笔记 • [第2章 JSP基础 ...
- Java高级程序设计笔记 • 【目录】
持续更新中- 我的大学笔记>>> 章节 内容 实践练习 Java高级程序设计作业目录(作业笔记) 第1章 Java高级程序设计笔记 • [第1章 IO流] 第2章 Java高级程序设 ...
- 《sicp》模块化程序设计 笔记
<sicp>模块化程序设计 2.2.3 序列作为一种约定界面 学习笔记 这节中,讲述了一种模块化的程序设计思想,也就是将程序设计为如同信号处理过程一样,采用级联的方式将程序各个部分组合在一 ...
- windows程序设计笔记
2014.05.06 新建一个visual C++ -- 常规 -- 空白 的项目,用.c后缀名指定这是一个用C语言来写的windows项目.和C语言的hellworld程序做了一个比较,按照wind ...
- win32多线程程序设计笔记(第四章下)
上一笔记讲了同步机制中的临界区域(Critical Sections).互斥器(Mutexes),下面介绍同步机制中的另外两种. 信号量(Semaphores) 举个例子: 现在有人要租车,接待他的代 ...
- JAVA高并发程序设计笔记
第二章 Java并行程序基础 1.join()的本质是让调用线程wait()在当前线程的对象上 2.Thread.yiedl()会使当前线程让出CPU 3.volatile保证可见性,无法保证原子性( ...
- Windows 程序设计 笔记
知识点 双字节字符集和Unicode字符集有何区别?采用双字节字符集有何问题 双字节字符集(DBCS)编码是0-255,DBCS含有1字节代码与2字节代码,而Unicode是统一的16位系统,这样就允 ...
- Rust基础笔记:闭包
语法 Closure看上去是这样的: let plus_one = |x: i32| x + 1; assert_eq!(2, plus_one(1)); 首先创建一个绑定plus_one,然后将它分 ...
随机推荐
- Android Native crash 处理案例分享
简介: Android Native crash 处理案例分享 1. 背景 目前 mPaas[1] Android使用Crash SDK对闪退进行的处理,CrashSDK 是 Android 平台上一 ...
- 深度 | 从DevOps到BizDevOps, 研发效能提升的系统方法
简介:研发效能提升不知从何下手.一头雾水?阿里资深技术专家一文为你揭秘研发效能提升的系统方法. 注:本文是对云栖大会何勉分享内容的整理 这几年"研发效能"一直是热词,很多组织 ...
- coredump 瘦身风云
简介: minicoredump神也! 继上一篇非典型程序员青囊搞定内存泄露问题后,美美地睡了一觉.睡梦中,突然金光闪闪,万道光芒照进时光隧道,恍惚来到大唐神龙年间.青囊此时化身狄仁杰高级助理, ...
- SQL server 自定义工资公式设计
目的: 工资系统中,在计算各工资项目的时候,用户能自定义公式.这里的讲述是从数据库方设计方面考虑,做简要的数据模拟和实体.存储过程的设计. 收集数据: 1.Employee员工信息数据(Employe ...
- K8s控制器---DaemonSet控制器(12)
一.DaemonSet控制器:概念.原理解读 1.1 DaemonSet概述 DaemonSet 控制器能够确保 k8s 集群所有的节点都运行一个相同的 pod 副本,当向 k8s 集群中增加 nod ...
- vue的pc端项目+element实现分页效果
效果图: 直接使用element操作很简单,记录一下要点: 根据ele提供的api修改data v-for="(i,s) in dataView.slice((currentPage-1)* ...
- 通过劫持线程arena实现任意地址分配 n1ctf2018_null
通过劫持线程arena,当堆开了一个线程之后,如果没有做好保护随之的危险也悄然而至 BUU上的n1ctf2018_null很好的说明了这个问题 题目链接:BUUCTF在线评测 (buuoj.cn) 看 ...
- 【Python Web】flask视频流
这篇文档,完全借鉴miguelgrinberg的博客. https://blog.miguelgrinberg.com/post/flask-video-streaming-revisited 想看具 ...
- 第五章-WAF 绕过
WAF 绕过 1.WAF分类 1.1.软件 WAF 一般被安装到 Web 服务器中直接对其进行防护,能够接触到服务器上的文件,直接检测服务器上是否有不安全的文件和操作等. 常见的软件:安全狗.云盾.云 ...
- Wordpress给每一个分类栏目定制不同的广告位
给分类栏目添加广告位,等同于添加自定义字段. 如果需要依据不同的栏目给广告位添加不同的tag来源,需要在模板页面中获取栏目的分类别名,读取不同的广告. 图1 如图1所示添加新的图片输入框 1. 实现的 ...