简介 - 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;
}

rust 程序设计笔记(1)的更多相关文章

  1. js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定

    js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定 addEventListener()与removeEventListener( ...

  2. Rust学习笔记1

    这是一份不错的rust教程,目前包括4个block和4个project.全部完成后可以用rust实现一个简单的key-value存储引擎. 注意:Windows下rust貌似会遇到一些bug,强烈建议 ...

  3. Java Web程序设计笔记 • 【目录】

    章节 内容 实践练习 Java Web程序设计作业目录(作业笔记) 第1章 Java Web程序设计笔记 • [第1章 Web应用程序] 第2章 Java Web程序设计笔记 • [第2章 JSP基础 ...

  4. Java高级程序设计笔记 • 【目录】

    持续更新中- 我的大学笔记>>> 章节 内容 实践练习 Java高级程序设计作业目录(作业笔记) 第1章 Java高级程序设计笔记 • [第1章 IO流] 第2章 Java高级程序设 ...

  5. 《sicp》模块化程序设计 笔记

    <sicp>模块化程序设计 2.2.3 序列作为一种约定界面 学习笔记 这节中,讲述了一种模块化的程序设计思想,也就是将程序设计为如同信号处理过程一样,采用级联的方式将程序各个部分组合在一 ...

  6. windows程序设计笔记

    2014.05.06 新建一个visual C++ -- 常规 -- 空白 的项目,用.c后缀名指定这是一个用C语言来写的windows项目.和C语言的hellworld程序做了一个比较,按照wind ...

  7. win32多线程程序设计笔记(第四章下)

    上一笔记讲了同步机制中的临界区域(Critical Sections).互斥器(Mutexes),下面介绍同步机制中的另外两种. 信号量(Semaphores) 举个例子: 现在有人要租车,接待他的代 ...

  8. JAVA高并发程序设计笔记

    第二章 Java并行程序基础 1.join()的本质是让调用线程wait()在当前线程的对象上 2.Thread.yiedl()会使当前线程让出CPU 3.volatile保证可见性,无法保证原子性( ...

  9. Windows 程序设计 笔记

    知识点 双字节字符集和Unicode字符集有何区别?采用双字节字符集有何问题 双字节字符集(DBCS)编码是0-255,DBCS含有1字节代码与2字节代码,而Unicode是统一的16位系统,这样就允 ...

  10. Rust基础笔记:闭包

    语法 Closure看上去是这样的: let plus_one = |x: i32| x + 1; assert_eq!(2, plus_one(1)); 首先创建一个绑定plus_one,然后将它分 ...

随机推荐

  1. 【产品能力深度解读】连续入围Gartner魔力象限的Quick BI有何魔力?

    简介: 国际权威分析机构Gartner发布2021年商业智能和分析平台魔力象限报告,阿里云Quick BI再度入选,并继续成为该领域魔力象限唯一入选的中国企业. Quick BI凭借在增强分析能力上的 ...

  2. 基于SLS构建RDS审计合规监控

    简介: 数据库是企业业务的数据核心,其安全方面的问题在传统环境中已经成为泄漏和被篡改的重要根源.因此,对数据库的操作行为尤其是全量 SQL 执行记录的审计日志,就显得尤为重要. 背景 数据库是企业业务 ...

  3. [GPT] php 报错 Unsupported operand types

    Unsupported operand types 这个错误通常发生在使用了不支持的操作数类型时.例如,当您尝试对两个不同类型的值执行算术运算时,就会出现这个错误. 例如,如果您尝试将字符串与数字相加 ...

  4. dotnet C# 多次对一个对象调用构造函数会发生什么

    今天来玩一点变态的,使用反射获取到某个类型的构造函数,接着多次对此类型的某个对象调用构造函数方法.请问此时会发生什么 假定有一个类型 Foo 的定义如下 class Foo : IDisposable ...

  5. 和 ChatGPT 聊聊 .NET 编译和执行背后的那些事儿

    1 .NET 编译.构建.执行涉及到哪些概念 在 .NET 编译.构建和执行中,涉及到以下概念: C# 或 Visual Basic .NET 等编程语言: 这些是 .NET Framework 使用 ...

  6. 理解FPGA内部的同步信号、异步信号和亚稳态

    FPGA(Field-Programmable Gate Array),即现场可编程门阵列.主要是利用内部的可编程逻辑实现设计者想要的功能.FPGA属于数字逻辑芯片,其中也有可能会集成一部分模拟电路的 ...

  7. 一些简单的Post方式WebApi接收参数和传递参数的方法及总结

    原文地址:https://www.zhaimaojun.top/Note/5475297(我自己的博客网站) 各种Post方式上传参数到服务器,服务器接收各种参数的示例 webapi可以说是很常用了, ...

  8. htts证书申请

    https://freessl.cn/ 教程: https://www.bilibili.com/video/BV1Ug411673P/?spm_id_from=333.337.search-card ...

  9. go-admin migrate 数据表迁移

    目录 视频教程 应用场景 目录说明 数据迁移 迁移步骤 配置数据库 常用命令示例 新建模型实例 3.1 方式一:不编译运行(推荐) 3.2 方式二:编译并运行迁移 3.3 方式三:golangIDE ...

  10. H5页面制作和CSS3动画的结合

    现在很火的是h5页面的开发,更多的视觉冲击,带来更多的关注度,更多的眼球,想要别人看你的东西,不在是以前的一段文字,或是一个图片的时代了,现在h5把一张张图片,一段段文字动起来,更有与客户的交互,而且 ...