From và Into
Ta có thể implement trait From và Into để đơn giản hoá việc chuyển đổi kiểu dữ liệu:
fn main() { let s = String::from("hello"); let addr = std::net::Ipv4Addr::from([127, 0, 0, 1]); let one = i16::from(true); let bigger = i32::from(123_i16); println!("{s}, {addr}, {one}, {bigger}"); }
Into sẽ tự động được implement khi From được implement:
fn main() { let s: String = "hello".into(); let addr: std::net::Ipv4Addr = [127, 0, 0, 1].into(); let one: i16 = true.into(); let bigger: i32 = 123_i16.into(); println!("{s}, {addr}, {one}, {bigger}"); }
This slide should take about 10 minutes.
- Vì vậy, thông thường ta chỉ cần implement
From, vì kiểu dữ liệu của bạn sẽ tự động cóInto. - Ngược lại, khi ta muốn khai báo 1 hàm nhận “bất kỳ kiểu dữ liệu nào có thể chuyển đổi thành
String”, ta nên sử dụngInto. Như vậy, hàm được khai báo sẽ chấp nhận các kiểu dữ liệu implementFromvà những kiểu dữ liệu chỉ implementInto.