全栈程序员的新玩具Rust(二)基本代码入门

先来看这个简单的程序

1.奇怪的关键字

fn=function 函数

mut=mutability 变异性,反义词是immutability 不变性。

2.变量定义

这和其它语言不太一样,普通的语言里变量默认为可变,如果不可变则要标注为readonly

有些语言压根没有不可变这个设计,所有变量都可变。

rust中,let定义的变量为immutability ,不可变,类似于其它语言中的readonly

所以图中的x 为 只读变量,不可变

图中y可以赋值

并且rust 允许覆盖定义,图中x定义了两次,之前的定义会被覆盖掉。

rust号称重视明确性的语言,但是允许覆盖定义难道不会增加不明确性吗?我才刚开始学习,理解不深,这个问题我先放着,以后或许会有答案。

3.字符串格式化输出

用{} 格式化输出了x,y

rust 的字符串设计有一点别扭,查阅资料显示

rust有char,并且char是四字节的,也就是utf32

但是String并不是 vec<char> 而是 vec<u8> 也就是string 是 utf8

所以string 并不能作为char列表访问,而是通过 "??????".chars()函数,转换为char的列表

这里有个重点记录一下 rust char 是utf32,string是utf8

因为存在utf32也无法一个char表示的字符,所以还是不能认为一个char就是一个字符。但是这已经覆盖了99.99%,我们中文的大部分文字一个utf16字够表达了,超出的那些文字很难遇到。

好让我们写一个更加复杂一点的程序

3.for循环

rust的for 循环 只有foreach一种形态,没有c语言那种for(var i=0;i<10;i++)的形式

1..10是表示一个 1到10的迭代器,不包括10

他的for语句不要小括号

continue 和 break 可以用于跳出循环,和其它语言相似

4.if表达式

if 表达式也和其它语言相似,不同的是  if 表达式的条件部分可以没有括号,也可以有。

但是大括号不可以省略

不允许 if(y==3) continue;这种写法

5.循环标签

rust 提供了循环标签这个概念

循环可以带一个标签,这样做 continue 和 break的时候,可以直接指定要跳出哪一层循环,这样在嵌套循环的情况下可以简化逻辑,而且还更加贴近机器语言行为。

再结合wasm的loops设计一看,嗯,你们搞rust和wasm肯定勾兑了不少。

再来个复杂一点的程序,输出个乘法口诀表吧

6.USE语句

开始写复杂的程序就必须借助库了,这里我们使用了rust标准库的stdout

可以通过use std::io::* 简单解决问题

7.字符串相关

这里通过format 宏连接了字符串,然后用as_bytes()将他变成一个

&[u8]类型,应为stdout().write();要求这个类型

8.expect

expect(“”)这部分不写也可以,这是rust常用的一个封装,返回result,这个函数可能会有失败的情况

.expect(“”)表示失败时输出其中的字符串

rust的很多方法都返回result,可能会失败。当然也可以用if 判断result

.expect(“”)是rust提供的一种快速的异常处理方法。

也挺好

第一个rust 程序,完成

原文地址:https://www.cnblogs.com/crazylights/p/12114825.html

时间: 2024-09-30 19:40:03

全栈程序员的新玩具Rust(二)基本代码入门的相关文章

全栈程序员的新玩具Rust(一) IDE环境

最基本的helloword过程 我们之前提过 第一步.安装rust工具链 https://www.rust-lang.org/tools/install 第二步.创建项目 cargo new helloworld 会得到一个控制台程序模板,源码如下 fn main() {     println!("Hello, world!");} 第三步.运行项目 cd helloworld cargo run 或者直接去执行exe(仅限windows) 注:rust在window下编译需要vs的

全栈程序员的新玩具Rust(六)第一个WASM程序

先上代码 https://gitee.com/lightsever/rust_study/tree/master/wasm_hello01 webassembly就不用再赘述了,耳朵里面快磨出茧子来了. rustwasm是火狐自家的玩具,让我们来继续做实验,让rust飞起来吧. 环境安装 安装好rust环境之后仍然需要 一个 wasm 工具包 cargo install wasm-pack 然后如果想快速创建一个wasm项目模板可以用这个 cargo generate --git https:/

全栈程序员的新玩具Rust(三)板条箱

上次用到了stdout,这次我们来写一个更复杂一点的游戏 rust的标准库叫做std,默认就会引入. 这次我们要用到一个随机数函数,而随机数比较尴尬的一点是这玩意不在标准库中,我们要额外依赖一个库. 很多编程方案都有自己的模块化库系统,rust也不例外,不过rust 把库叫做crate,就是图中这种箱子的意思,倒也形象. rust提供了一个官方网站 crates.io用来管理库,你也可以把你的库提交上去 我们这次就要使用这个rand库 安装依赖库 因为查询到当前rand库的版本已经到了 0.7.

快乐死我了,怎么样成为一个全栈程序员(Full Stack Developer) good

受苏格拉底大神的启迪,我也来谈谈全栈.禅师:成为全栈工程师,这个问题等于如何成为全才,有可能吗码农:有可能,不过可能性比较低,因为达芬奇这类人毕竟是百年一遇的奇才.不过,因为我热爱这个行业,也有一定天赋,所以只做好软件全栈的话我想还是可能的禅师:你玩过三国志这个游戏吗码农:我还开发过禅师:你喜欢什么样的武将,诸葛亮怎么样?码农:不错,虽然他武力只有20,不过智力有100,不过游戏出战不是单打独斗,我可以给他搭配武力100,智力20的吕布,在战场上所向披靡禅师:对于一个武力65,智力65的武将,你

[转]乐死我了,怎么样成为一个全栈程序员(Full Stack Developer),附我想专注的语言

受苏格拉底大神的启迪,我也来谈谈全栈.禅师:成为全栈工程师,这个问题等于如何成为全才,有可能吗码农:有可能,不过可能性比较低,因为达芬奇这类人毕竟是百年一遇的奇才.不过,因为我热爱这个行业,也有一定天赋,所以只做好软件全栈的话我想还是可能的禅师:你玩过三国志这个游戏吗码农:我还开发过禅师:你喜欢什么样的武将,诸葛亮怎么样?码农:不错,虽然他武力只有20,不过智力有100,不过游戏出战不是单打独斗,我可以给他搭配武力100,智力20的吕布,在战场上所向披靡禅师:对于一个武力65,智力65的武将,你

Java全栈程序员之02:Ubuntu下Java环境安装、配置、测试

在上文讲完之后,我们手里的ubuntu只能算是一个上网机,什么也干不了,本篇我们将折腾它为开发机. 这里,我们这里假定你对linux体系是初级选手,所以本篇会讲的啰嗦一点,高手就出门左转吧. 1.安装 首先我们确定下我们安装的Ubuntu系统是否已经安装了java环境. 进入终端,敲入命令su,进入root模式(当然也可以省掉这一步),敲入命令java -version.如果看到这个界面,说明尚未安装Java环境, Ps:我们的课程中曾经讲过如何删除一个老的jdk,这里就略过不讲了. 继而,让我

High Performance Python 笔记(Python是门不错的语言,全栈程序员就用它好了!)

High Performance Python 目录 1Understanding Performant Python 2Profiling 3Lists and Tuples 4Dictionaries and Sets 5Iterators and Generators 6Matrix and Vector Computation 7Compiling to C 8Concurrency 9multiprocessing 10Clusters and Job Queues 11Using L

Java全栈程序员之09:IDEA+GitHub

GitHub是源码托管站点,其依赖于Git这个源码管理工具来进行代码的托管.所以将我们的代码托管到GitHub之前,我们需要安装Git. 1.Git安装 可以通过输入git命令来确定是否在本机已经安装了Git,如下. 如果发现没有安装,在Ubuntu上可以通过命令:sudo apt-get install git来进行安装,如下: 安装成功,再打开idea,就能看到project的右键菜单中多了git这个菜单项. 2.代码添加到本地git仓库 创建本地仓库需要在菜单vcs下选择import in

本人工作性质已改变,不再从事全职程序员,回归登山行摄领队

本人工作性质已改变,不再从事全职程序员,回归登山行摄领队. 喜马拉雅行摄:http://www.himalaya-cross.com 个人网站:http://www.liangyichen.com