Rust Cheat Sheet - 快速参考指南,收录常用语法、命令与实践。
fn main() {
println!("Hello, World!");
}
$ rustc Hello_World.rs
$ ./Hello_World
Hello, World!
bool | Boolean (true / false) |
char | character |
f32, f64 | 32-bits, 64-bits floats |
i64, i32, i16, i8 | signed 16- ... integers |
u64, u32, u16, u8 | unsigned 16-bits, ... integers |
isize | pointer-sized signed integers |
usize | pointer-sized unsigned integers |
See: Rust Types
// Single Placeholder
println!("{}", 1);
// Multiple Placeholder
println!("{} {}", 1, 3);
// Positional Arguments
println!(
"{0} is a {1} {2}, also {0} is a {3} programming language",
"Rust", "cool", "language", "safe"
);
// Named Arguments
println!(
"{country} is a diverse nation with unity.",
country = "India"
);
// Placeholder traits :b for binary, :0x is for hex and :o is octal
println!("Let us print 76 is binary which is {:b} , and hex equivalent is {:0x} and octal equivalent is {:o}", 76, 76, 76);
// Debug Trait
println!(
"Print whatever we want to here using debug trait {:?}",
(76, 'A', 90)
);
// New Format Strings in 1.58
let x = "world";
println!("Hello {x}!");
// Prints the output
print!("Hello World\n");
// Appends a new line after printing
println!("Appending a new line");
// Prints as an error
eprint!("This is an error\n");
// Prints as an error with new line
eprintln!("This is an error with new line");
// Initializing and declaring a variable
let some_variable = "This_is_a_variable";
// Making a variable mutable
let mut mutable_variable = "Mutable";
// Assigning multiple variables
let (name, age) = ("ElementalX", 20);
// (Global) constant
const SCREAMING_SNAKE_CASE: i64 = 9;
// Line Comments
/*.............Block Comments */
/// Outer doc comments
//! Inner doc comments
See: Comment
fn test() {
println!("This is a function!");
}
fn main() {
test();
}
See: Functions
let mut a: u32 = 8;
let b: u64 = 877;
let c: i64 = 8999;
let d = -90;
let mut sixty_bit_float: f64 = 89.90;
let thirty_two_bit_float: f32 = 7.90;
let just_a_float = 69.69;
let true_val: bool = true;
let false_val: bool = false;
let just_a_bool = true;
let is_true = 8 < 5; // => false
let first_letter_of_alphabet = 'a';
let explicit_char: char = 'F';
let implicit_char = '8';
let emoji = "\u{1f600}"; // => 😀
let community_name = "AXIAL";
let no_of_members: &str = "ten";
println!("The name of the community is {community_name} and it has {no_of_members} members");
See: Strings
┌─────┬─────┬─────┬─────┬─────┬─────┐
| 92 | 97 | 98 | 99 | 98 | 94 |
└─────┴─────┴─────┴─────┴─────┴─────┘
0 1 2 3 4 5
let array: [i64; 6] = [92, 97, 98, 99, 98, 94];
j0 j1 j2 j3 j4 j5
┌────┬────┬────┬────┬────┬────┐
i0 | 1 | 2 | 3 | 4 | 5 | 6 |
├────┼────┼────┼────┼────┼────┤
i1 | 6 | 5 | 4 | 3 | 2 | 1 |
└────┴────┴────┴────┴────┴────┘
let array: [[i64; 6]; 2] = [
[1, 2, 3, 4, 5, 6],
[6, 5, 4, 3, 2, 1]
];
let mut array: [i32; 3] = [2, 6, 10];
array[1] = 4;
array[2] = 6;
Use the mut keyword to make it mutable.
let mut array: [i64; 4] = [1, 2, 3, 4];
let mut slices: &[i64] = &array[0..3]; // Lower range is inclusive and upper range is exclusive
println!("The elements of the slices are : {slices:?}");
let some_vector = vec![1, 2, 3, 4, 5];
A vector is declared using the vec! macro.
let tuple = (1, 'A', "Cool", 78, true);
let cs: &str = "cheat sheet";
// => Share cheat sheet for developers
println!("Share {cs} for developers");
// Creating an empty string object
let my_string = String::new();
// Converting to a string object
let S_string = a_string.to_string();
// Creating an initialized string object
let lang = String::from("Rust");
println!("First language is {lang}");
let rand = String::from("Random String");
rand.capacity() // => 13
Calculates the capacity of the string in bytes.
let name = String::from("ElementalX");
name.contains("Element") // => true
Checks if the substring is contained inside the original string or not.
let mut half_text = String::from("Hal");
half_text.push('f'); // => Half
let mut hi = String::from("Hey there...");
hi.push_str("How are you doing??");
// => Hey there...How are you doing??
println!("{hi}");
e == f | e is equal to f |
e != f | e is NOT equal to f |
e < f | e is less than f |
e > f | e is greater than f |
e <= f | e is less than or equal to f |
e >= f | e is greater or equal to f |
let (e, f) = (1, 100);
let greater = f > e; // => true
let less = f < e; // => false
let greater_equal = f >= e; // => true
let less_equal = e <= f; // => true
let equal_to = e == f; // => false
let not_equal_to = e != f; // => true
a + b | a is added to b |
a - b | b is subtracted from a |
a / b | a is divided by b |
a % b | Gets remainder of a by dividing with b |
a * b | a is multiplied with b |
let (a, b) = (4, 5);
let sum: i32 = a + b; // => 9
let subtractions: i32 = a - b; // => -1
let multiplication: i32 = a * b; // => 20
let division: i32 = a / b; // => 0
let modulus: i32 = a % b; // => 4
| Operator | Description |
|---|---|
g & h | Binary AND |
| <code>g | h</code> | Binary OR |
g ^ h | Binary XOR |
!g | Binary one's complement |
g << h | Binary shift left |
g >> h | Binary shift right |
let (g, h) = (0x1, 0x2);
let bitwise_and = g & h; // => 0
let bitwise_or = g | h; // => 3
let bitwise_xor = g ^ h; // => 3
let right_shift = g >> 2; // => 0
let left_shift = h << 4; // => 32
| Example | Meaning |
|---|---|
c && d | Both are true (AND) |
| <code>c || d</code> | Either is true (OR) |
!c | c is false (NOT) |
let (c, d) = (true, false);
let and = c && d; // => false
let or = c || d; // => true
let not = !c; // => false
let mut k = 9;
let mut l = k;
| Operator | Description |
|---|---|
k += l | Add a value and assign, then k=18 |
k -= l | Subtract a value and assign, then k=0 |
k /= l | Divide a value and assign, then k=1 |
k *= l | Multiply a value and assign, then k=81 |
| <code>k |= l</code> | Bitwise OR and assign, then k=89 |
let case1: i32 = 81;
let case2: i32 = 82;
if case1 < case2 {
println!("case1 is less than case2");
}
let case3 = 8;
let case4 = 9;
if case3 >= case4 {
println!("case3 is better than case4");
} else {
println!("case4 is greater than case3");
}
let foo = 12;
let bar = 13;
if foo == bar {
println!("foo is equal to bar");
} else if foo < bar {
println!("foo less than bar");
} else if foo != bar {
println!("foo is not equal to bar");
} else {
println!("Nothing");
}
let mut arr1: [i64; 3] = [1, 2, 3];
if let [1, 2, _] = arr1 {
println!("Works with array");
}
let mut arr2: [&str; 2] = ["one", "two"];
if let ["Apple", _] = arr2 {
println!("Works with str array too");
}
let tuple_1 = ("India", 7, 90, 90.432);
if let (_, 7, 9, 78.99) = tuple_1 {
println!("Works with tuples too");
}
let tuple_2 = (9, 7, 89, 12, "Okay");
if let (9, 7, 89, 12, blank) = tuple_2 {
println!("Everything {blank} mate?");
}
let tuple_3 = (89, 90, "Yes");
if let (9, 89, "Yes") = tuple_3 {
println!("Pattern did match");
} else {
println!("Pattern did not match");
}
let day_of_week = 2;
match day_of_week {
1 => {
println!("Its Monday my dudes");
}
2 => {
println!("It's Tuesday my dudes");
}
3 => {
println!("It's Wednesday my dudes");
}
4 => {
println!("It's Thursday my dudes");
}
5 => {
println!("It's Friday my dudes");
}
6 => {
println!("It's Saturday my dudes");
}
7 => {
println!("It's Sunday my dudes");
}
_ => {
println!("Default!")
}
};
let nested_conditions = 89;
if nested_conditions == 89 {
let just_a_value = 98;
if just_a_value >= 97 {
println!("Greater than 97");
}
}
for mut i in 0..15 {
i -= 1;
println!("The value of i is : {i}");
}
let mut check = 0;
while check < 11 {
println!("Check is : {check}");
check += 1;
println!("After incrementing: {check}");
if check == 10 {
break; // stop while
}
}
loop {
println!("hello world forever!");
}
The infinite loop indicated.
let mut i = 1;
loop {
println!("i is {i}");
if i > 100 {
break;
}
i *= 2;
}
for (v, c) in (0..10 + 1).enumerate() {
println!("The {c} number loop");
if v == 9 {
println!("Here we go continue?");
continue;
}
println!("The value of v is : {v}");
}
fn print_message() {
println!("Hello, CheatSheets.zip!");
}
fn main() {
//Invoking a function in Rust.
print_message();
}
fn main() {
let x: u32 = 10;
let y: u32 = 20;
// => 200
println!("Calc: {}", cal_rect(x, y));
}
fn cal_rect(x: u32, y: u32) -> u32 {
x * y
}
fn main() {
let mut by_ref = 3; // => 3
power_of_three(&mut by_ref);
println!("{by_ref}"); // => 9
}
fn power_of_three(by_ref: &mut i32) {
// de-referencing is important
*by_ref = *by_ref * *by_ref;
println!("{by_ref}"); // => 9
}
fn main() {
let (mut radius, mut pi) = (3.0, 3.14);
let (area, _perimeter) = calculate(
&mut radius,
&mut pi
);
println!("The area and the perimeter of the circle are: {area} & {_perimeter}");
}
fn calculate(radius: &mut f64, pi: &mut f64) -> (f64, f64) {
let perimeter = 2.0 * *pi * *radius;
let area = *pi * *radius * *radius;
return (area, perimeter);
}
fn main() {
let mut array: [i32; 5] = [1, 2, 3, 4, 6];
print_arrays(array);
println!("The elements: {array:?}");
}
fn print_arrays(mut array: [i32; 5]) {
array[0] = 89;
array[1] = 90;
array[2] = 91;
array[3] = 92;
array[4] = 93;
println!("The elements: {array:?}");
}
fn main() {
let mut arr: [i32; 5] = [2, 4, 6, 8, 10];
multiply(arr);
println!("The array is : {:?}", multiply(arr));
}
fn multiply(mut arr: [i32; 5]) -> [i32; 5] {
arr[2] = 90;
for mut i in 0..5 {
arr[i] = arr[i] * arr[2];
}
return arr;
}
let a_int = 90; // int
// int to float
let mut type_cast = (a_int as f64);
let original: char = 'I';
// char to int => 73
let type_casted: i64 = original as i64;
To perform type-casting in Rust one must use the as keyword.
let mut foo = 4;
let mut borrowed_foo = &foo;
println!("{borrowed_foo}");
let mut bar = 3;
let mut mutable_borrowed_bar = &mut bar;
println!("{mutable_borrowed_bar}");
Here borrowed value borrows the value from value one using & operator.
let mut borrow = 10;
let deref = &mut borrow;
println!("{}", *deref);
De-referencing in rust can be done using the * operator
{
// The scope limited to this braces
let a_number = 1;
}
println!("{a_number}");
This will produce error as the scope of the variable a_number ends at the braces
地址
Level 10b, 144 Edward Street, Brisbane CBD(Headquarter)Level 2, 171 La Trobe St, Melbourne VIC 3000四川省成都市武侯区桂溪街道天府大道中段500号D5东方希望天祥广场B座45A13号Business Hub, 155 Waymouth St, Adelaide SA 5000Disclaimer
JR Academy acknowledges Traditional Owners of Country throughout Australia and recognises the continuing connection to lands, waters and communities. We pay our respect to Aboriginal and Torres Strait Islander cultures; and to Elders past and present. Aboriginal and Torres Strait Islander peoples should be aware that this website may contain images or names of people who have since passed away.
匠人学院网站上的所有内容,包括课程材料、徽标和匠人学院网站上提供的信息,均受澳大利亚政府知识产权法的保护。严禁未经授权使用、销售、分发、复制或修改。违规行为可能会导致法律诉讼。通过访问我们的网站,您同意尊重我们的知识产权。 JR Academy Pty Ltd 保留所有权利,包括专利、商标和版权。任何侵权行为都将受到法律追究。查看用户协议
© 2017-2025 JR Academy Pty Ltd. All rights reserved.
ABN 26621887572