tgoop.com/type_driven_thoughts/201
Create:
Last Update:
Last Update:
Немного размышлений на тему Rust и его развития без стагнации.
Для поддержания этого "девиза" в Rust появились "издания", сейчас на носу издание 2024.
Вот среднего размера изменение, которое это издание привнесёт.
С ним, код работающий в издании 2021:
fn indices<'s, T>(
slice: &'s [T],
) -> impl Iterator<Item = usize> {
0 .. slice.len()
}
...
fn main() {
let mut data = vec![1, 2, 3];
let i = indices(&data);
data.push(4); // <-- Error!
i.next(); // <-- assumed to access `&data`
}
перестаёт работать и выдаёт ошибку, потому-что новое издание задействует lifetime в возвращаемом impl Trait.
Для исправления предлагается ввести некий use:
) -> impl Iterator<Item = usize> + use<> {
// -----
// Return type does not use `'s` or `T`
и на мой взгляд, это конечно выглядит как костыль. Думаю сейчас я понимаю тех, кто в мою молодость программиста сидел и говорил что Java 8 это всё сахар и не нужно программистам. Думаю что дальше тянуть обратную совместимость у Rust будет получаться всё сложнее и сложнее, пора работать над Rust 2.0.
BY Type Driven Thoughts 🦀
Share with your friend now:
tgoop.com/type_driven_thoughts/201