Rusty Diary (01)
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.