У Ref и RefMut появился try_map — безопасная замена borrow на лету
15.08.2025Добавлен метод try_map для Ref и RefMut. Он расширяет стабильный filter_map тем, что позволяет вернуть данные об ошибке при неудаче.
Зачем
Приём «взять ссылку, посмотреть на значение, положить обратно» на данных из RefCell требует осторожности: если между чтением и записью значение успеет измениться, проверка перестанет быть корректной. filter_map решает это одним вызовом, но ничего не сообщает, если значение не подошло.
try_map добавляет второй результат: при неудаче можно вернуть описание причины, не выходя из области владения. Автор отдельно обосновал безопасность: тип ошибки не может содержать данные с временем жизни ссылки, поэтому обойти проверку нельзя.
Отслеживание — rust-lang/rust#143801, автор — GrigorenkoPV.
Оригинал
Add Ref/RefMut try_map method
Упоминаний: 1 · Просмотров: 1