Định nghĩa một extension trait cho phép định dạng bất kỳ iterable nào của các kiểu có thể hiển thị trong một định dạng tùy chỉnh trong Rust
Định nghĩa một extension trait cho phép định dạng bất kỳ iterable nào của các kiểu có thể hiển thị trong một định dạng tùy chỉnh trong Rust
Để định nghĩa một extension trait cho phép định dạng bất kỳ iterable nào của các kiểu có thể hiển thị trong một định dạng tùy chỉnh trong Rust, bạn cần tạo một trait mới mà có thể áp dụng cho bất kỳ kiểu nào thỏa mãn điều kiện là có thể hiển thị (implement std::fmt::Display
). Dưới đây là một ví dụ về cách thực hiện:
use std::fmt::Display;
// Định nghĩa trait CustomFormatIterable cho bất kỳ kiểu nào thỏa mãn 'Iterator' và các phần tử của nó thỏa mãn 'Display'.
trait CustomFormatIterable: Iterator where Self::Item: Display {
// Phương thức custom_format để định dạng các phần tử của iterable.
fn custom_format(&mut self, separator: &str) -> String {
self.map(|item| item.to_string())
.collect::<Vec<_>>()
.join(separator)
}
}
// Triển khai trait CustomFormatIterable cho bất kỳ kiểu nào thỏa mãn 'Iterator' và các phần tử của nó thỏa mãn 'Display'.
impl<T> CustomFormatIterable for T where T: Iterator, T::Item: Display {}
fn main() {
// Ví dụ sử dụng với Vec<i32>, một kiểu có thể hiển thị.
let numbers = vec![1, 2, 3, 4, 5];
let formatted_string = numbers.iter().custom_format(", ");
println!("Formatted numbers: {}", formatted_string);
// Ví dụ sử dụng với Vec<String>, một kiểu khác có thể hiển thị.
let words = vec!["hello", "world", "in", "rust"];
let formatted_string = words.iter().custom_format(" - ");
println!("Formatted words: {}", formatted_string);
}
Trong ví dụ trên, CustomFormatIterable
là một trait được định nghĩa để áp dụng cho bất kỳ kiểu nào thỏa mãn điều kiện là một iterator của các phần tử có thể hiển thị (Display
). Phương thức custom_format
nhận vào một ...
middle
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào