Avatar
0
monkey Enlightened
monkey Enlightened
Rust: dấu hỏi chấm ở cuối hàm có nghĩa là gì?
Bởi vì trong rust chưa có exception, nên chúng ta cần trả về kiểu Result cho những hàm mà có thể có lỗi. Nhưng đôi khi chúng ta không muốn lúc nào cũng phải xử lý lỗi, chúng muốn lấy kết quả ra xử lý và nhường việc xử lý lỗi cho những hàm gọi sau, chúng ta có thể dùng dấu ?, ví dụ: <p> </p> <pre> use std::fmt; // Import the `fmt` module. #[derive(Debug)] struct DivideError { details: String } impl DivideError { fn new(msg: &amp;str) -&gt; DivideError { DivideError{details: msg.to_string()} } } impl fmt::Display for DivideError { fn fmt(&amp;self, f: &amp;mut fmt::Formatter) -&gt; fmt::Result { write!(f,"{}",self.details) } } impl std::error::Error for DivideError { fn description(&amp;self) -&gt; &amp;str { &amp;self.details } } fn divide(a: i32, b: i32) -&gt; Result { if b != 0 { Ok(a / b) } else { Err(DivideError::new("can not devide 0")) } } fn divideWrap() -&gt; Result { let result = divide(10, 5)?; println!("{}", result); Ok(()) } fn main() { divideWrap(); } </pre> <p> </p> <p> Tham khảo: <a href="https://stackoverflow.com/questions/42917566/what-is-this-question-mark-operator-about" target="_blank">https://stackoverflow.com/questions/42917566/what-is-this-question-mark-operator-about</a> </p>
Answer
Avatar
0
monkey Enlightened
monkey Enlightened
Rust: self.0 nghĩa là gì?
Rust: self.0 hay self.[index] nói chung là cách để truy cập phần tử thứ index trong các struct mà không có fields. <p> </p> <p> Ví dụ với: <code>struct MinMax(i64, i64);</code> thì <code>let minmax = MinMax(0, 14);</code> thì <code>self.0 = 0</code> và <code>self.1 = 4</code> </p>
Answer
Avatar
0
monkey Enlightened
monkey Enlightened
Vì sao nên học Rust?
Có những lý do để nên học Rust: <p> </p> <ul> <li>Rust là ngôn ngữ dạng biên dịch, và nó có thể biên dịch ra loại chương trình, đặc biệt là các chương trình <a href="https://webassembly.org/" target="_blank">webassembly</a> hay các chương trình có thể chạy trực tiếp trên hệ điều hành mà không cần phải qua máy ảo vậy nên tốc độ có thể ngang bằng viết chương trình với C/C++. </li> <li>Cú pháp cũng khá thân thiện và có phần dễ dàng hơn so với C/C++ </li> <li>Trong thế hệ tiếp theo của blockchain thì Rust đang được lựa chọn làm ngôn ngữ để viết smart contract</li></ul>
Answer