首页 > 编程语言 >rust 程序设计笔记(1)

rust 程序设计笔记(1)

时间:2023-11-11 11:56:02浏览次数:40  
标签:cargo 笔记 num let match new 程序设计 rust

简介 - Rust 程序设计语言 简体中文版

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
            • 在不生成二进制文件的情况下构建项目来检查错误
  • 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 来显示的返回
  • 注释

    • 简单注释
    • 文档注释
  • 使用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;
}

标签:cargo,笔记,num,let,match,new,程序设计,rust
From: https://www.cnblogs.com/azoux/p/17825737.html

相关文章

  • 20211128《信息安全系统设计与实现》第六章学习笔记
    一、任务内容自学教材第6章,提交学习笔记(10分)1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT:“请你以苏格拉......
  • 【复建笔记】模拟退火
    简述一下我的理解:为什么要有那一行一定概率下接受答案?因为如果没有就会在当前峰下爬山,有的话才能跳到别的峰上,这一行与温度有关,当温度越低,跳的概率越低。退火随机一个二维点:nowx=limx+((rand()<<1)-RAND_MAX)*T;nowy=limy+((rand()<<1)-RAND_MAX)*T;......
  • 深度学习笔记
    机器学习流程数据获取特征工程(神经网络可以作为一种特征提取的方法,而非算法)建立模型(用工具包建模很快)评估与应用特征工程是所有机器学习算法中最核心的部分图像分类任务图像300*100*3(像素点数目+通道数(3个通道:如RGB))......
  • #2023-2024-1 20231308 《计算机基础与程序设计》第七周学习总结
    2023-2024-120231308《计算机基础与程序设计》第七周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第七周作业这个作业的目标自学计算机科学概论第8章《C语言程序设计》第6章作......
  • yzy第九周学习笔记
    《Unix/Linux系统编程》第六章学习笔记第六章信号和信号处理本章讲述了信号和信号处理;介绍了信号和中断的统一处理,有助于从正确的角度看待信号;将信号视为进程中断,将进程从正常执行转移到信号处理;解释了信号的来源,包括来自硬件、异常和其他进程的信号;然后举例说明了信号在Un......
  • 学习笔记9
    教材知识点总结信号和中断信号是一种异步事件通知机制,类似于软件中断,用于通知进程发生了某种事件。与硬件中断不同,信号是由内核向进程发送的,而不是由硬件设备触发的。Unix/Linux中的信号处理信号类型:Unix/Linux系统支持多种类型的信号,例如SIGINT(终端中断)、SIGSEGV(段错......
  • 读程序员的制胜技笔记09_死磕优化(下)
    1. 造成延迟的3个方面1.1. CPU1.2. I/O1.3. 人2. 不要打包数据2.1. 一个打包的数据结构2.1.1. C#structUserPreferences{publicbyteItemsPerPage;publicbyteNumberOfItemsOnTheHomepage;publicbyteNumberOfAdClicksICanStomach;publicbyteM......
  • 《软件工程:一种实践方法》读书笔记一
    它把作为一本书按惯例该讲的历史部分形式一下就一段话带过,但是其中一个来自《人月传说》的形象的比喻深深吸引了我的眼球:“……正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。……程序设计工作正像这样一个泥潭,……一批批程序员被迫在泥潭中......
  • Altium Designer自学笔记
    本次使用AD20为基础进行练习。1.1新建工程包括:原理图、PCB、原理图库、PCB库。 1.2新建元器件 点击右下角的“Panels"面板,调出新建元器件界面1.3视图---->栅格------->切换捕捉栅格右边DesignerltemID可修改器件名称,绘制状态下Tap键可暂停修改。 11.4复制元器件按......
  • FOC学习笔记-基于灯哥FOC
    1、foc控制技术现在无刷电机越来越多的进入人们的视野,因为他的控制精度更高,相对直流电机而言可以更稳定的工作等特点,被越来越多的应用于机器人行业,而无刷电机的控制离不开FOC控制。FOC(field-orientedcontrol)为磁场导向控制,又称为矢量控制(vectorcontrol),是一种利用变频器(VFD)控制......