Pull to refresh

Comments 6

use std::fs::File;

fn main() {
    let f = File::create("foo.txt")?;
}

rustc 1.13.0 (2c6933acc 2016-11-07)
error[E0277]: the trait bound `(): std::ops::Carrier` is not satisfied
 --> <anon>:4:13
  |
4 |     let f = File::create("foo.txt")?;
  |             ^^^^^^^^^^^^^^^^^^^^^^^^ trait `(): std::ops::Carrier` not satisfied
  |
  = note: required by `std::ops::Carrier::from_error`

error: aborting due to previous error

Хм, я ожидал что благодаря введению специального оператора очень частая ошибка новичков — попытка пробросить ошибку из функции, которая не возвращает Result — получит внятное сообщение об ошибке :(

Ну, Core Team сами пишут:


Однако в данном выпуске сообщения об ошибках использования ? реализованы ещё не полностью.

Есть еще проблема: попробуй создать локальную лямбду и из нее выбросить ошибку.

Хотя нет, вроде починили, но всё равно во всяких цепочках итераторов сложновато? применять. Хотелось бы какого-нибудь аналога для Option
https://play.rust-lang.org/

Меня больше всего радуют stack-based drop flags
Наконец-то нормальный интероп со всяким сишным антиквариатом :)

UFO just landed and posted this here
Sign up to leave a comment.

Articles