当前位置: 首页 > news >正文

【Rust学习】Rust环境搭建和Rust基础语法

本文专栏:Rust学习

目录

一,Rust环境搭建

1,C++环境安装

2,Rust下载

3,Rust安装 

4,Rust环境检测

二,创建Rust项目 

1,rustc

 2,cargo

三,输出到命令行 

四,Rust基础语法—变量与可变性

1,变量

2,常量与不可变变量的区别

3,隐藏(Shadowing)


一,Rust环境搭建

本博客只将在windows上的开发环境的搭建。

1,C++环境安装

Rust依赖于C++编译环境,安装Rust之前,需要安装visual studio。

链接:Visual Studio 2022 IDE - 适用于软件开发人员的编程工具

2,Rust下载

链接:Rust 程序设计语言https://www.rust-lang.org/zh-CN

点击"马上开始"

3,Rust安装 

下载之后,双击打开,如下图:

输入1,按回车,等待安装即可。

rustup-init.exe 是 Rust 的安装和管理工具,默认情况下,它会同时安装这些工具:rustc,rust-std,cargo,rust-docs,rustfmt,clippy。其中,rustc 是 Rust 的编译工具,cargo 是 Rust 的包管理工具。

安装结束:

 

4,Rust环境检测

 查看Rust版本

rustc --version

rustc -V

 查看cargo版本

cargo --version

cargo -V

Rust更新

rustup update 

二,创建Rust项目 

1,rustc

rustc只适合于一些小项目,在大项目中需要用到cargo

Rust代码使用.rs后缀,使用vscode 写代码

右键文件名,打开终端

编译代码,使用rustc命令编译

rustc helloword.rs 

 2,cargo

cargo是rust的包管理器和构建系统,创建项目命令如下:

cargo new 项目名

 项目名是hello_cargo,也会创建一个目录hello_cargo

编译

cargo build

运行

cargo run

在命令行中用cargo build进行编译,编译后会生成一个target文件夹,其中debug文件中有可执行程序hello_cargo.exe 

三,输出到命令行 

Rust输出到命令行的方式有两种,print!和println!,后者在输出的时候会加上一个换行符。

这两个函数时宏定义!!!

使用这两个函数打印信息的时候,第一个参数是格式字符串,后面一串是可变参数,在C语言printf中"%+字母"表示占位符,而在Rust中,使用'{ }'

fn main() { 
    let a = 12; 
    println!("a is {}", a); 
}

运行结果是:

a is 12  

在 {} 之间可以放一个数字,它将把之后的可变参数当作一个数组来访问,下标从 0 开始。 

println!("a is {0}, a again is {0}", a); 

 如果想要输出{ 或者 }时,可以通过{{ 和 }} 分别转义代表{ 和 }

四,Rust基础语法—变量与可变性

1,变量

声明变量使用let关键字

默认情况下,变量是不可变的(Immutable)

示例:

fn main() {

    println!("Hello, world!");

    let a=10;

    println!("a is {}",a);

}

a是不可变变量 

如果要修改变量a,就会报错

fn main() {

    println!("Hello, world!");

    let a=10;

    println!("a is {}",a);

    a=20;

}

不可以对不可变的变量两次赋值。

如果想要修改变量a的值,需要将a的属性设为可变变量。

声明变量时,在变量前加上mut,就可以使变量可变。

fn main() {

    println!("Hello, world!");

    let mut a=10;

    println!("a is {}",a);

    a=20;

    println!("a is {}",a)

}

2,常量与不可变变量的区别

常量(constant):常量在绑定值以后也是不可变的。

它与不可变变量的区别:

  • 不可以使用 mut修饰,常量永远是不可变的
  • 常量声明需要使用const关键字,同时它的类型必须被标记
  • 常量只可以绑定 到常量表达式,无法绑定到函数的调用结果或只能在运行时才能计算出的值

常量定义 

const a: i32=123  //类型为i32(32位有符号整数)

虽然 Rust 有自动判断类型的功能,在声明变量的时候,也可以指明类型

let a: u64=123  

 这声明a的类型为u64(64位无符号整数),如果不声明,a 将自动被判断为有符号 32 位整型变量

3,隐藏(Shadowing)

 可以使用相同名字声明新的变量,新的变量就会隐藏(shadow)之前的同名变量。

fn main()

{

    let x=5;

    //隐藏

    let x=x+1;

    println!("x is {}",x);

}

还有,声明的新变量,可以与之前的变量类型不同

fn main()

{

    let str="hello world";

    println!("str is {}",str);

    let str=5;

    println!("str is {}",str);

}

http://www.dtcms.com/a/112766.html

相关文章:

  • Jetpack Compose 自定义组件完全指南
  • python基础-13-处理excel电子表格
  • 叁仟数智指路机器人的智能导航精度如何?
  • 【爬虫案例】采集 Instagram 平台数据几种方式(python脚本可直接运行)
  • 你用的是Bing吗?!
  • 【AI论文】GPT-ImgEval:一个用于诊断GPT4o在图像生成方面的综合基准
  • 论文写作篇#8:双栏的格式里怎么插入横跨两栏的图片和表格
  • Kafka 概念
  • Johnson算法——两阶段流水线调度的最优解法
  • k8s安装cri驱动创建storageclass动态类
  • Deep Reinforcement Learning for Robotics翻译解读2
  • 关于apple ios苹果mdm监管锁的漏洞与修复
  • web forms可视化开发显示的网页是用ExpressionWebEditorFrame控件,是IE内核还是简单的HTML解析?如何让他加载CSS和JS?
  • 如何一天背300到500个单词
  • 赚钱模拟器-百宝库v0.1.1
  • 精品可编辑PPT | 基于湖仓一体构建数据中台架构大数据湖数据仓库一体化中台解决方案
  • ffmpeg音频分析
  • 机器学习(1)—线性回归
  • 【Pandasai】理解SmartDataframe 类:对dataframe添加自然语言处理能力
  • 从爬虫到可视化:Python分析豆瓣Top250电影数据
  • 不在 qtdesigner中提升,进行主题程序设计
  • FreeRTOS 启动过程中 SVC 和 PendSV 的工作流程​
  • 新能源汽车电子电气架构设计中的功能安全
  • DHCP Snooping理论笔记(超详细)
  • 云资源合规基线:确保云环境安全与合规的完整指南
  • 蓝桥杯嵌入式客观题二
  • 网络性能优化参数关系解读 | TCP Nagle / TCP_NODELAY / TCP_QUICKACK / TCP_CORK
  • Redis数据结构之Set
  • jp(1) command
  • FreeRTOS任务创建和删除(动态)