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.

相关推荐
天翼云开发者社区5 分钟前
使用 Rust 实现的基础的List 和 Watch 机制
rust·云计算
召摇11 分钟前
如何避免写垃圾代码:Java篇
java·后端·代码规范
无限大615 分钟前
HTTP 1.0去哪了?揭开Web协议版本误解的真相
后端·面试
程序员蜗牛15 分钟前
![图片](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/62105da0f2c54b3497b0
后端
他日若遂凌云志16 分钟前
深入拆解 Linux Socket 五大 I/O 模型:从底层机制到性能适配
后端
expect7g18 分钟前
COW、MOR、MOW
大数据·数据库·后端
程序员小假18 分钟前
我们来说说当一个线程两次调用 start() 方法会出现什么情况?
java·后端
bobz96527 分钟前
I/O复用 select、poll、epoll
后端
无限大634 分钟前
一文读懂HTTP 1.1/2.0/3.0:从原理到应用的通俗解析
后端·面试
SimonKing1 小时前
Archery:开源、一站式的数据库 SQL 审核与运维平台
java·后端·程序员