Skip to main content

Rusty Diary (01)

· 3 min read
Doko
Writer

Sau một thời gian làm việc với Rust theo dạng qua loa chơi chơi thì mình sẽ ghi chú lại những thứ mình nhớ được. Bao gồm từ cơ bản đến khó hơn một chút.

Sau một thời gian làm việc với Rust theo dạng qua loa chơi chơi thì mình sẽ ghi chú lại những thứ mình nhớ được. Bao gồm từ cơ bản đến khó hơn một chút.

Các dependencies cần thiết khi dùng với GTK-rs

Các dependencies đó là:

[dependencies.gtk]
version = "0.9.0" # Có thể thay đổi
features = ["v3_16"] # Có thể thay đổi

[dependencies.gio]
version = "" # Có thể thay đổi
features = ["v2_44"] # Có thể thay đổi

Khai báo biến

Rust có cơ chế type interrence (tự suy kiểu dữ liệu của biến) nên trong nhiều trường hợp, không cần ghi kiểu:

let a = 1; // Tự hiểu là i32
let b = "hello"; // Tự hiểu là &str

Còn muốn ghi kiểu hẳn hoi thì:

let a: i32 = 1;
let b:&str = "haha";

Khai báo biến... có thay đổi được

Bình thường khi báo biến như trên thì không thể gán (assign) lại giá trị lần nữa, mà cần thêm mut:

let mut a: i32 = 1;
a = 2;

Vòng lặp vô hạn

Trong C/C++ ta có:

#include <stdio.h>
int main()
{
for(;;)
{
printf("Hello");
}
return 0;
}

hoặc while:

while(1)
{
// Code
}

Thì với Rust:

loop {
// Code...
}

còn nếu muốn continue hay break? Đơn giản, thậm chí ta còn gắn được cả label cho nó để biết continue hay break cái gì:

#![allow(unreachable_code)]

fn main() {
'outer: loop {
println!("Entered the outer loop");

'inner: loop {
println!("Entered the inner loop");
// This would break only the inner loop
//break;

// This breaks the outer loop
break 'outer;
}

println!("This point will never be reached");
}

println!("Exited the outer loop");
}

Còn nếu muốn return giá trị trong loop? Ez, để giá trị ngay sau break (coi break như return):

fn main() {
let mut counter = 0;

let result = loop {
counter += 1;

if counter == 10 {
break counter * 2;
}
};

assert_eq!(result, 20);
}

Thật ra cũng có thể dùng for hoặc while để làm vòng lặp vô tận nhưng để sau tìm hiểu.

Gọi hàm ra

Thì cũng như nhiều ngôn ngữ khác:

ui.main();

Khai báo hàm:

fn new_func () -> () {
let x = 5;
let y = 2;

println!("The value of y is: {}", y);
}

new_func();

Tạm thời là vậy, sẽ có part 2.