Rust Learning Day1

Learn Rust for the Future: Day 1

Reference: The Rust Programming Language

This book is the official tutorial for Rust.

Install Cargo

Cargo is Rust's package manager, similar to Maven in Java. You can use it to create and manage projects. For example, to create a new project named guessing_game, you can run:

sh 复制代码
cargo new guessing_game

The Cargo.toml file is like pom.xml in Maven. It manages your project's dependencies. In this case, there is only one dependency named rand, which is used to generate random numbers. The line rand = "0.8.5" is shorthand for rand = "^0.8.5", meaning it will use versions from 0.8.5 up to, but not including, 0.9.0. If a new compatible version, like 0.8.6, is released, you can update to it using cargo update. However, if the new version has incompatible changes, it might break your program. Therefore, Cargo.lock is required to ensure consistent versions.

Here's an example Cargo.toml file for the guessing game project:

toml 复制代码
[package]
name = "guessing_game"
version = "0.1.0"
edition = "2021"

[dependencies]
rand = "0.8.5"

The Cargo.lock file is generated automatically by Cargo and keeps track of the exact versions of all dependencies.

Features Compared to Java

In Rust, you can declare variables as immutable by default using let, which means you cannot change their value later:

rust 复制代码
let x = 1;
// error: x is immutable
x = 2;

To make a variable mutable, use mut:

rust 复制代码
let mut x = 2;
x = 3;

Rust also supports variable shadowing, allowing you to declare a variable with the same name in a different scope. This feature allows the variable to have different types or values in different scopes:

rust 复制代码
let x = 3;
{
    let x = 12;
    // x: 12 within this scope
    println!("x: {x}");
}
// x: 3 outside the inner scope
println!("x: {x}");

Shadowing allows you to transform a variable's type, while mut does not. When the scope ends, the variable reverts to its original value.

相关推荐
小糯米601几秒前
C语言 动态内存管理
c语言·开发语言
前端的阶梯1 分钟前
Conda 开发 Python 程序完全指南
前端·人工智能·后端
程序员cxuan4 分钟前
AI 时代,如何超过大多数人
人工智能·后端·程序员
say_fall10 分钟前
可编程中断控制器8259A工作方式超详细解析
android·开发语言·学习·硬件架构·硬件工程
骄马之死12 分钟前
Spring 核心知识点(IOC + AOP + 事务)
java·后端·spring
San813_LDD13 分钟前
[QT]《Qt 开发避坑指南:随机数、容器操作与 VS 环境配置》
开发语言·qt
小糯米60116 分钟前
C语言 自定义类型:联合和枚举
java·c语言·开发语言
wei_shuo17 分钟前
KES 高可用架构实战:主备复制、读写分离与容灾切换深度解析
后端
weixin_5231853219 分钟前
Java基础知识总结(二):JVM内存结构与变量生命周期
java·开发语言·jvm
神奇小汤圆19 分钟前
沉迷 Vibe coding 后我幡然醒悟:为什么可持续开发要回归半古法编程
后端