Сообщение Re[10]: Почему в расте отсутствует выброс исключений? от 06.12.2022 14:44
Изменено 06.12.2022 14:45 T4r4sB
Re[10]: Почему в расте отсутствует выброс исключений?
Здравствуйте, vsb, Вы писали:
vsb>Во-первых у каждой функции с ошибками надо возвращать Result вместо конкретного типа. Это как минимум синтаксический шум.
Вместо T возвращаешь Result<T, MyError>
vsb>Во-вторых если функция сейчас не бросает ошибок, а завтра начинает бросать, мне надо менять её тип, потом проходить по всем местам её использования и как минимум добавлять туда этот самый вопросик.
Неявные точки выхода это зло.
vsb>Потенциально надо рекурсивно менять тип этой вызывающий функции и так далее.
С checked exceptions то же самое. А unchecked это зло.
vsb>
vsb>есть у меня подозрение, что вопросиком тут не отделаешься. Конечно на выходе нужен именно результат над списком чисел, а не список результатов над числами.
https://doc.rust-lang.org/rust-by-example/error/iter_result.html#fail-the-entire-operation-with-collect
vsb>Во-первых у каждой функции с ошибками надо возвращать Result вместо конкретного типа. Это как минимум синтаксический шум.
Вместо T возвращаешь Result<T, MyError>
vsb>Во-вторых если функция сейчас не бросает ошибок, а завтра начинает бросать, мне надо менять её тип, потом проходить по всем местам её использования и как минимум добавлять туда этот самый вопросик.
Неявные точки выхода это зло.
vsb>Потенциально надо рекурсивно менять тип этой вызывающий функции и так далее.
С checked exceptions то же самое. А unchecked это зло.
vsb>
vsb>List<Integer> parseStrings(List<String> strings) {
vsb> return strings.stream().map(s -> Integer.parseInt(s)).toList();
vsb>}
vsb>
strings.iter().map(|s| Integer::parse_int(s)?)?.collect()
vsb>есть у меня подозрение, что вопросиком тут не отделаешься. Конечно на выходе нужен именно результат над списком чисел, а не список результатов над числами.
https://doc.rust-lang.org/rust-by-example/error/iter_result.html#fail-the-entire-operation-with-collect
Re[10]: Почему в расте отсутствует выброс исключений?
Здравствуйте, vsb, Вы писали:
vsb>Во-первых у каждой функции с ошибками надо возвращать Result вместо конкретного типа. Это как минимум синтаксический шум.
Вместо T возвращаешь Result<T, MyError>
vsb>Во-вторых если функция сейчас не бросает ошибок, а завтра начинает бросать, мне надо менять её тип, потом проходить по всем местам её использования и как минимум добавлять туда этот самый вопросик.
Неявные точки выхода это зло.
vsb>Потенциально надо рекурсивно менять тип этой вызывающий функции и так далее.
С checked exceptions то же самое. А unchecked это зло.
vsb>
vsb>есть у меня подозрение, что вопросиком тут не отделаешься. Конечно на выходе нужен именно результат над списком чисел, а не список результатов над числами.
https://doc.rust-lang.org/rust-by-example/error/iter_result.html#fail-the-entire-operation-with-collect
vsb>Во-первых у каждой функции с ошибками надо возвращать Result вместо конкретного типа. Это как минимум синтаксический шум.
Вместо T возвращаешь Result<T, MyError>
vsb>Во-вторых если функция сейчас не бросает ошибок, а завтра начинает бросать, мне надо менять её тип, потом проходить по всем местам её использования и как минимум добавлять туда этот самый вопросик.
Неявные точки выхода это зло.
vsb>Потенциально надо рекурсивно менять тип этой вызывающий функции и так далее.
С checked exceptions то же самое. А unchecked это зло.
vsb>
vsb>List<Integer> parseStrings(List<String> strings) {
vsb> return strings.stream().map(s -> Integer.parseInt(s)).toList();
vsb>}
vsb>
vsb>есть у меня подозрение, что вопросиком тут не отделаешься. Конечно на выходе нужен именно результат над списком чисел, а не список результатов над числами.
https://doc.rust-lang.org/rust-by-example/error/iter_result.html#fail-the-entire-operation-with-collect