отделялись точками?
Ну типа
pub use crate.format.{BinaryBytes, DecimalBytes, FormattedDuration, HumanBytes, HumanDuration};
pub use crate.iter.{ProgressBarIter, ProgressIterator};
fn main() {
std.env.set_var("PROXY_HOST", "localhost");
let xs = Vec.new();
}
Почему в качестве разделителя выбрано два двоеточия ::? Где возникла бы неразличимая неоднозначность парсинга?
а ты понимаешь разницу между :: и .?
Просто четырёхточие прикольнее.
Да, вполне. Просто контекстной информации вполне достаточно для разрешения неоднозначности, нет?
Может быть, но шумнее.
контекстно это позволяет не путать одно с другим
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=a2107838ccc866822f47af9a90b9a8f1 UPD: наверное нужно пояснение — если бы разделителем везде была точка, этот код бы скомпилировался, не показав пользователю, что тот вызывает не то что хотел.
Не скомпилится, там же ты от value делаешь, а надо от типа.
О, это интересный кейс, спасибо.
ко всему вышесказанному добавлю, что вообще-то ЯП - это про полезную избыточность, а не про компрессию. Т.е. отступы, разные виды скобочек, правила нейминга - это все не для компьютера (ему похуй), а чтоб человеческому мозгу было за что зацепляться. ЯП - это UI к машине, с аффордансами и прочей эргономикой.
Нужен баланс. Спасибо, что например не надо больше заниматься полезной избыточностью в паттерн матчинге, и расставлять вызовы deref-ов и уж тем более drop-ов. Я просто имел возможность потыкать вышеуказанные языки в течение очень долгого времени, и перегрузка точки это скорее удобно, чем нет (а перегрузка + для конкатенации строк скорее неудобно, и эта фича лишняя). В целом согласен, определённая избыточность нужна, чтобы человек легко смог получить контекст.
Обсуждают сегодня