首页 > 其他分享 >学习 Rust(第二章 Rust基础入门)

学习 Rust(第二章 Rust基础入门)

时间:2022-12-07 23:57:16浏览次数:56  
标签:入门 i32 add let 类型 第二章 Rust 函数

0. Rust基础入门

从现在开始,我们正式踏入了 Rust 大陆,这篇广袤而神秘的世界,在这个世界中,将接触到很多之前都没有听过的概念:

  • 所有权、借用、生命周期
  • 宏编程
  • 模式匹配

类似的还有很多,不过不用怕,引用武林外传一句话:咱上面有人。有本书在,一切虚妄终将烟消云散。

本章主要介绍 Rust 的基础语法、数据类型、项目结构等,学完本章,你将对 Rust 代码有一个清晰、完整的认识。

开始之前先通过一段代码来简单浏览下 Rust 的语法:

 
// Rust 程序入口函数,跟其它语言一样,都是 main,该函数目前无返回值
fn main() {
    // 使用let来声明变量,进行绑定,a是不可变的
    // 此处没有指定a的类型,编译器会默认根据a的值为a推断类型:i32,有符号32位整数
    // 语句的末尾必须以分号结尾
    let a = 10;
    // 主动指定b的类型为i32
    let b: i32 = 20;
    // 这里有两点值得注意:
    // 1. 可以在数值中带上类型:30i32表示数值是30,类型是i32
    // 2. c是可变的,mut是mutable的缩写
    let mut c = 30i32;
    // 还能在数值和类型中间添加一个下划线,让可读性更好
    let d = 30_i32;
    // 跟其它语言一样,可以使用一个函数的返回值来作为另一个函数的参数
    let e = add(add(a, b), add(c, d));

    // println!是宏调用,看起来像是函数但是它返回的是宏定义的代码块
    // 该函数将指定的格式化字符串输出到标准输出中(控制台)
    // {}是占位符,在具体执行过程中,会把e的值代入进来
    println!("( a + b ) + ( c + d ) = {}", e);
}

// 定义一个函数,输入两个i32类型的32位有符号整数,返回它们的和
fn add(i: i32, j: i32) -> i32 {
    // 返回相加值,这里可以省略return
    i + j
}

注意 在上面的 add 函数中,不要为 i+j 添加 ;,这会改变语法导致函数返回 () 而不是 i32,具体参见语句和表达式

有几点可以留意下:

  • 字符串使用双引号 "" 而不是单引号 '',Rust 中单引号是留给单个字符类型(char)使用的
  • Rust 使用 {} 来作为格式化输出占位符,其它语言可能使用的是 %s%d%p 等,由于 println! 会自动推导出具体的类型,因此无需手动指定

 

标签:入门,i32,add,let,类型,第二章,Rust,函数
From: https://www.cnblogs.com/yinhuachen/p/16964923.html

相关文章

  • C++入门级基础知识汇总
    知识来源:https://www.imooc.com/learn/1304https://www.runoob.com/cplusplus/cpp-tutorial.html 编程第一步导入头文件:#include<stdio.h>std=standard......
  • MarkDown入门学习总结教程
    Webelievethatwritingisaboutcontent,aboutwhatyouwanttosay–notaboutfancyformatting.译文:我们坚信写作写的是内容,所思所想,而不是花样格式.Markd......
  • 【2022-12-07】爬虫从入门到入狱(五)
    scrapy架构介绍#引擎(EGINE)引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。有关详细信息,请参见上面的数据流部分。#调度器(SCHEDULER)用来接......
  • mysql中文全文检索从入门到放弃
    like全匹配模糊查询不能使用索引一直是sql查询的一个棘手的问题,那么mysql的全文检索真的能解决这个问题吗?背景最近,在工作中遇到一个查询优化的问题,简化的sql如下:SELECT*F......
  • 爬虫从入门到入狱(五)
    今日内容概要scrapy架构介绍scrapy解析数据settings相关配置持久化方案全站爬取cnblogs文章爬虫和下载中间件今日内容详细scrapy架构介绍#引擎(EGINE)引......
  • FPGA时序入门(新手必看)
    1.FPGA时序的基本概念FPGA器件的需求取决于系统和上下游(upstreamanddownstrem)设备。我们的设计需要和其他的devices进行数据的交互,其他的devices可能是FPGA外部的芯片,可......
  • 还不会ES?Elasticsearch快速入门实操指南送上
    前言本文主要介绍ES的常用请求,让大家能快速上手ES的使用主要参考官网的​​Quickstart​​指引。一、请求方式向Elasticsearch发送请求主要有2种方式:1、使用restapi发送h......
  • 还不会分布式事务,seata xa模式入门实战送上
    文章目录​​前言​​​​一、什么是seata?​​​​二、seata原理说明​​​​1、角色说明​​​​2、什么是Seata的事务模式?​​​​三、SEATA的分布式案例​​​​1、业......
  • 线性代数入门——第二讲 行列式基本性质
    上一讲我们了解了线性代数中行列式的基础知识,这一讲继续来学习行列式中的八个基本性质,并给出这些性质严谨的证明,学习行列式基本性质的目的是为了面对高阶行列式通过对性质......
  • 线性代数入门——第一讲 线性代数初步
    一、行列式1.行列式的定义​ 行列式貌似是一种运算?与矩阵不同的是,行列式要求行和列的数量必须相同,直接看一个例子来理解好了。比如下面给出的这个就是二阶行列式​ ......