[Rust Book] 3.2. Kiểu dữ liệu

Kiểu dữ liệu

Mọi giá trị trong Rust đều thuộc về một kiểu dữ liệu cố định, cho Rust biết loại dữ liệu được gán để nó biết cách làm việc với dữ liệu đó. Chúng ta sẽ xem xét hai tập kiểu dữ liệu: vô hướng (scalar) và phức hợp (compound).

Hãy nhớ rằng Rust là một ngôn ngữ có kiểu tĩnh (statically typed), có nghĩa là nó phải biết kiểu của tất cả các biến lúc biên dịch. Trình biên dịch có thể suy luận ra kiểu chúng ta muốn dựa trên giá trị và cách chúng ta dùng nó. Trong trường hợp có thể có nhiều kiểu, ví dụ như khi chúng ta chuyển đổi một String sang một kiểu số bằng parse trong phần [“So sánh số đoán với số bí mật”] (comparing-the-guess-to-the-secret-number) ở Chương 2, chúng ta phải khai báo kiểu, giống như sau:

[Đọc tiếp]

[Rust Book] 3.1. Biến và khả năng thay đổi

Từ khóa

Ngôn ngữ Rust có một bộ các từ khóa (keyword) được dành riêng và chỉ được sử dụng bới ngôn ngữ, giống như trong những ngôn ngữ khác. Hãy luôn nhớ rằng bạn không thể dùng những từ này cho tên biến hay tên hàm. Hầu hết các từ khóa có ý nghĩa đặc biệt, bạn sẽ dùng chúng để làm nhiều loại tác vụ trong chương trình Rust của bạn; một vài từ khóa hiện tại chưa có tính năng liên quan nhưng sẽ được sử dụng trong tương lai. Bạn có thể xem danh sách từ khóa ở Phụ lục A.

[Đọc tiếp]

[Rust Book] 2. Lập trình game đoán số

Lập trình game đoán số

Chúng ta hãy cùng làm quen với Rust kỹ hơn thông qua một project! Chương này sẽ giới thiệu một vài khái niệm phổ biến trong Rust bằng cách chỉ cho bạn cách sử dụng chúng trong những chương trình thực tế. Bạn sẽ học về let, match, các phương thức (method), các hàm liên kết (associated function), viêc sử dụng các crate bên ngoài và nhiều thứ khác nữa! Những chương tiếp theo sẽ đi sâu chi tiết hơn. Trong chương này, bạn sẽ chỉ thực hành những điều cơ bản.

Chúng ta sẽ làm một chương trình cơ bản cho người mới: một trò chơi đoán số. Cách nó hoạt động sẽ là: chương trình sẽ sinh ra một số nguyên ngẫu nhiên trong khoảng từ 1 đến 100. Người chơi đoán một con số và nhập vào. Sau khi được nhập, chương trình sẽ chỉ ra số đã đoán là quá thấp hay quá cao. Nếu đoán chính xác, trò chơi sẽ in ra một tin nhắn chúc mừng và thoát.

[Đọc tiếp]

[Rust Book] 1.3. Bắt đầu với Rust - Hello, Cargo

Hello, Cargo!

Cargo là hệ thống build và quản lý gói của Rust. Hầu hết các Rustacean sử dụng công cụ này để quản lý project Rust của họ vì Cargo xử lý rất nhiều tác vụ cho bạn, như build code, tải thư viện mà code của bạn phụ thuộc vào và build những thư viện đó. (Chúng ta gọi những thư viện mà code của bạn cần là những dependency.)

Những chương trình Rust đơn giản nhất, như ví dụ bạn vừa viết chẳng hạn, không có dependency nào. Nên nếu chúng ta build project “Hello, world!” với Cargo, nó sẽ chỉ dùng một phần của Cargo để xử lý việc build code của bạn. Khi bạn viết những chương trình phức tạp hơn, bạn sẽ cần thêm các dependency, và nếu bạn bắt đầu một project Cargo, việc thêm dependency sẽ dễ hơn rất nhiều.

[Đọc tiếp]

[Rust Book] 1.2. Bắt đầu với Rust - Hello, World

Hello, World!

Vậy là các bạn đã cài xong Rust, giờ thì thử viết chương trình Rust đầu tiên nào. Cách truyền thống để học một ngôn ngữ mới là viết một chương trình nhỏ để in ra chữ Hello, world! trên màn hình, ở đây chúng ta cũng sẽ làm tương tự!

Chú ý: Cuốn sách này sử dụng dòng lệnh cơ bản. Nhưng Rust không có yêu cầu cụ thể gì về việc chỉnh sửa hay công cụ bạn dùng hay code chạy trên đâu, nên nếu bạn thích bạn có thể dùng IDE thay thế cho dòng lệnh. Có nhiều IDE hỗ trợ Rust; bạn có thể xem chi tiết trong tài liệu của IDE. Hiện nay, Rust team đang tập trung vào việc hỗ trợ IDE, và đang có tiến độ đáng kể!

[Đọc tiếp]

[Rust Book] 1.1. Bắt đầu với Rust - Cài đặt

Cài đặt

Bước đầu tiên là cài đặt Rust. Chúng ta sẽ tải Rust thông qua rustup, một công cụ dòng lệnh dành cho việc quản lý các phiên bản Rust và các công cụ liên quan. Bạn sẽ cần kết nối internet trong quá trình cài.

Chú ý: Nếu không thích sử dụng rustup vì một vài lý do nào đó, bạn có thể tham khảo những cách cài đặt khác.

[Đọc tiếp]

Cấu hình Raspberry Pi 4 thành Wireless Access Point



                                         +- RPi -------+
                                     +---+ 192.168.1.2 |          +- Laptop ----+
                                     |   |     WLAN AP +-)))  (((-+ WLAN Client |
                                     |   | 192.168.3.1 |          | 192.168.3.2 |
                                     |   +-------------+          +-------------+
                 +- Router ----+     |
                 | Firewall    |     |   +- PC#1 ------+
(Internet)---WAN-+ DHCP server +-LAN-+---+ 192.168.1.3 |
                 | 192.168.1.1 |     |   +-------------+
                 +-------------+     |
                                     |   +- PC#2 ------+
                                     +---+ 192.168.1.4 |
                                         +-------------+
[Đọc tiếp]

Tính thời gian thực thi thực sự trong C++

#include <chrono>

int main() {
	std::chrono::time_point <std::chrono::system_clock, std::chrono::duration<double, std::milli>> then = std::chrono::high_resolution_clock::now();;

	// ... do something ...

	std::chrono::time_point <std::chrono::system_clock, std::chrono::duration<double, std::milli>> now = std::chrono::high_resolution_clock::now();;
	double elapseTimeInMS = (now - then).count();

	return 0;
}

Cách viết khác ngắn hơn:

#include <chrono>

using namespace std;

int main() {
	auto then = chrono::high_resolution_clock::now();

	// ... do something ...

	auto now = chrono::high_resolution_clock::now();
	double elapseTimeInMS = chrono::duration<double, milli>(now - then).count();

	return 0;
}
cpp