LINUX.ORG.RU

История изменений

Исправление DarkEld3r, (текущая версия) :

Например, вот так:

println!("{}", 5 + from_str::<Value>(&read_to_string("data.json")?)?[3].as_u64().ok_or("invalid number")?);

Не очень изящно? Да, но тут, во первых, присутствует какая-никакая, но «обработка ошибок». В языке с исключении записать это можно было бы лаконичнее. Причём масштабируется это дело в нормальную обработку ошибок лучше, чем твой код, где её вообще нет. Во вторых, в расте вообще сахаром не сильно балуют. Не удивлюсь, если в хаскеле, который я слишком плохо знаю, можно даже лаконичнее.

В общем, не вижу проблемы. Или я как-то неправильно понял приведённый фрагмент кода?

Мешают, когда данные в тип не укладываются.

Вот с этим особенно не согласен. Наличие типов не значит, что надо типизировать всё и максимально подробно. Если у нас устраивает, что где-то строка (слишком общий тип), то и ладно.

Исходная версия DarkEld3r, :

Например, вот так:

println!("{}", 5 + from_str::<Value>(&read_to_string("data.json")?)?[3].as_u64().ok_or("invalid number")?);

Не очень изящно? Да, но тут, во первых, присутствует какая-никакая, но «обработка ошибок». В языке с исключении записать это можно было бы лаконичнее. Во вторых, в расте вообще сахаром не сильно балуют. Не удивлюсь, если в хаскеле, который я слишком плохо знаю, можно даже лаконичнее.

В общем, не вижу проблемы. Или я как-то неправильно понял приведённый фрагмент кода?

Мешают, когда данные в тип не укладываются.

Вот с этим особенно не согласен. Наличие типов не значит, что надо типизировать всё и максимально подробно. Если у нас устраивает, что где-то строка (слишком общий тип), то и ладно.