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.

相关推荐
五行星辰几秒前
Spring AI 实战:用 Java 搞 AI,从此告别调参侠
java·后端
紫菜炒饭几秒前
什么??go中的协程池竟然.........
后端
一只自律的鸡3 分钟前
STL之vector
开发语言·c++·算法
知其然亦知其所以然4 分钟前
不懂 Python?没关系!Easy RAG 让 Java 开发者也能玩转大模型
java·后端·llm
此刻我在家里喂猪呢5 分钟前
qt之开发大恒usb3.0相机三
开发语言·qt
五行星辰5 分钟前
Spring AI 实现 MCP:让 AI 自动管理你的代码质量
java·后端
shangjg39 分钟前
Kafka ACK机制详解:数据可靠性与性能的权衡之道
java·数据库·分布式·后端·kafka
哈哈哈哈哈哈哈哈哈...........1 小时前
【Java】ForkJoin 框架
java·开发语言
zh_xuan1 小时前
c++ typeid运算符
开发语言·c++
夕水1 小时前
分享一些实用的PHP函数(对比js/ts实现)(1)
后端·php