首页 > 其他分享 >Rust学习笔记

Rust学习笔记

时间:2023-02-14 12:45:19浏览次数:48  
标签:String 笔记 学习 类型 let Rust println fn

Cargo

Cargo 是 Rust 的构建系统和包管理器。因为它可以为你处理很多任务,比如构建代码、下载依赖库并编译这些库

  • 查看版本号

    cargo --version
    rustc --version  # 查看rust的版本
    
  • 新建项目

    cargo new hello_cargo
    

    创建时会初始化一个git仓库, 如果在现有的git仓库中运行cargo new, 则不会生成git文件

  • 编译项目

    cargo build
    

    这个命令会创建一个可执行文件 target/debug/hello_cargo (在 Windows 上是 target\debug\hello_cargo.exe

  • 运行项目

    cargo run
    

    若未编译则该命令也会先编译

  • 检查编译

    cargo check
    

    该命令快速检查代码确保其可以编译,但并不产生可执行文件, 通常 cargo check 要比 cargo build 快得多,因为它省略了生成可执行文件的步骤

  • 发布release

    cargo build --release
    

    当项目最终准备好发布时,可以使用 cargo build --release 来优化编译项目。这会在 target/release 而不是 target/debug 下生成可执行文件。这些优化可以让 Rust 代码运行的更快,不过启用这些优化也需要消耗更长的编译时间。

变量和可变性

变量默认是不可改变的(immutable), Rust 编译器保证,如果声明一个值不会变,它就真的不会变。

你可以在变量名之前加 mut 来使其可变

声明常量使用 const 关键字而不是 let,并且 必须 注明值的类型

数据类型

rust有两类数据类型子集:标量(scalar)复合(compound)

标量

标量scalar)类型代表一个单独的值。Rust 有四种基本的标量类型:整型、浮点型、布尔类型和字符类型

整型

长度 有符号 无符号
8-bit i8 u8
16-bit i16 u16
32-bit i32 u32
64-bit i64 u64
128-bit i128 u128
arch isize usize

整型溢出

比方说有一个 u8 ,它可以存放从零到 255 的值。那么当你将其修改为 256 时就会发生 “整型溢出”(“integer overflow” ),关于这一行为 Rust 有一些有趣的规则

当在 debug 模式编译时,Rust 检查这类问题并使程序 panic

在 release 构建中,Rust 不检测溢出,相反会进行一种被称为二进制补码包装(two’s complement wrapping)的操作。简而言之,值 256 变成 0,值 257 变成 1,依此类推。

浮点型

Rust 的浮点数类型是 f32f64,分别占 32 位和 64 位。默认类型是 f64,因为在现代 CPU 中,它与 f32 速度几乎一样,不过精度更高。

let x = 2.0; // f64
let y: f32 = 3.0; // f32

布尔型

Rust 中的布尔类型有两个可能的值:truefalse。Rust 中的布尔类型使用 bool 表示。

let t = true;
let f: bool = false; // 显式指定类型注解

字符类型

Rust 的 char 类型是语言中最原生的字母类型, 注意 char 由单引号指定,不同于字符串使用双引号。

let c = 'z';
let z = 'ℤ';
let heart_eyed_cat = '

标签:String,笔记,学习,类型,let,Rust,println,fn
From: https://www.cnblogs.com/gcxblogs/p/17119198.html

相关文章

  • 关于我在学习LFU的时候,在开源项目捡了个漏这件事。
    你好呀,我是歪歪。这篇文章带大家盘一下LFU这个玩意。为什么突然想起聊聊这个东西呢,因为前段时间有个读者给我扔过来一个链接:我一看,好家伙,这不是我亲爱的老朋友,Dubbo......
  • SSH学习笔记
    SSH概要SecureShell,安全外壳协议,简称ssh,是一种建立在应用层基础上的安全协议,通过对密码进行加密传输验证,可在不安全的网络中对网络服务提供安全的传输环境,实现ssh客户端......
  • 联邦学习论文阅读笔记08 A Survey of Incentive Mechanism Design for Federated Lear
        问题:现有联邦学习研究集中在提高模型精度和完成时间-------准确率与效率,即又快又好。然而实际中客户不愿意投入到无回报的FL中。    1前言:机器学习的......
  • 项目学习1
    如何创建go项目在src目录下创建项目名称,如src/github.com/xylx/goblog;如果不准备上传至代码托管平台站点,则可以直接创建项目名,如:src/goblog如何使用VSCode的内置......
  • 送你一份2023Java学习路线,按图索骥,开启一路狂飙!
    新年正月进入尾声,二月的脚步已经临近。该学习的学习、该努力的努力,改立的目标还是要立,送你一份2023Java学习路线,按图索骥,开启一路狂飙。No.1 初探Java/JavaSE基础技术入......
  • IM通讯协议专题学习(九):手把手教你如何在iOS上从零使用Protobuf
    本文作者:丁同舟,来自金蝶随手记技术团队。1、引言接上篇《金蝶随手记团队的Protobuf应用实践(原理篇)》,本文将以iOS端的Objective-C代码为例,图文并茂地向您菔救绾卧趇OS......
  • 2023年2月14日学习Linux
    关闭Linux系统的命令:init02)Linux终端:Linux终端也称为虚拟控制台。Linux终端采用字符命令行方式工作,用户通过键盘输入命令,通过Linux终端对系统进行控制。3)切换虚拟终端......
  • spring boot学习笔记:第十章--实现AcApp端 -中
    这节课的内容是完善对局列表界面,排行榜界面和bot界面的设计。ctrl+shift+c点击后,出现想要的组件属性。exportclassGame{constructor(id,AcWingOS){con......
  • 机器学习-朴素贝叶斯
    ######前言*朴素贝叶斯是一种基于贝叶斯定理的分类算法,属于生成式模型的范畴。它的基本思想是基于贝叶斯定理和特征独立性假设。它假设每个特征之间相互独立,因此名称为......
  • 读Java实战(第二版)笔记09_函数式的思考
    1. 规则1.1. 传递参数,返回结果1.1.1. 异常和中断都不算返回结果1.2. 减少共享的可变数据结构能帮助你降低维护和调试程序的代价2. 耦合性2.1. 软件系统中各组......