У 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