Size: a a a

Rust — русскоговорящее сообществo

2020 September 15

NL

Nick Linker in Rust — русскоговорящее сообществo
Boris Vinogradov
а ты понимаешь разницу между :: и .?
Да, вполне. Просто контекстной информации вполне достаточно для разрешения неоднозначности, нет?
источник

NL

Nick Linker in Rust — русскоговорящее сообществo
Эрик
Просто четырёхточие прикольнее.
Может быть, но шумнее.
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Nick Linker
Да, вполне. Просто контекстной информации вполне достаточно для разрешения неоднозначности, нет?
контекстно это позволяет не путать одно с другим
источник

Э

Эрик in Rust — русскоговорящее сообществo
Ну и да, как ты будешь делить между
let mut Arc = Arc.new(x);
let mut Arc = Arc.new(y);
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
и да оно неоднозначно
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Эрик
Ну и да, как ты будешь делить между
let mut Arc = Arc.new(x);
let mut Arc = Arc.new(y);
ахах, вот да)
источник

Э

Эрик in Rust — русскоговорящее сообществo
Второе Arc.new — это метод арка или метод от Deref<T>?
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
нее, компилятор то смогёт
источник

NL

Nick Linker in Rust — русскоговорящее сообществo
Эрик
Ну и да, как ты будешь делить между
let mut Arc = Arc.new(x);
let mut Arc = Arc.new(y);
Выдавать ошибку здесь.
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
но вот человек нет
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Nick Linker
Выдавать ошибку здесь.
там нет ошибки
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
Nick Linker
#вопрос
Вопрос: что было бы, если бы модули/субмодули в Rust тоже отделялись точками?
Ну типа
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: наверное нужно пояснение — если бы разделителем везде была точка, этот код бы скомпилировался, не показав пользователю, что тот вызывает не то что хотел.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Nick Linker
Выдавать ошибку здесь.
Найс позиция. Вместо нормального синтаксиса ошибками раскидываться.
источник

Э

Эрик in Rust — русскоговорящее сообществo
(((Mike Lubinets)))
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=a2107838ccc866822f47af9a90b9a8f1

UPD: наверное нужно пояснение — если бы разделителем везде была точка, этот код бы скомпилировался, не показав пользователю, что тот вызывает не то что хотел.
Не скомпилится, там же ты от value делаешь, а надо от типа.
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
Эрик
Не скомпилится, там же ты от value делаешь, а надо от типа.
Именно
источник

NL

Nick Linker in Rust — русскоговорящее сообществo
Эрик
Найс позиция. Вместо нормального синтаксиса ошибками раскидываться.
Смотри: джава, скала, котлин, хаскель, питон могут использовать точку в разных контекстах, в чём проблема?
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
А с точкой скомпилится и у тебя будет баг
источник

RA

Roman Akberov in Rust — русскоговорящее сообществo
Эрик
Второе Arc.new — это метод арка или метод от Deref<T>?
Например, переменная могла бы shadow-ить тип/модуль с таким же именем. Поведение не хуже, чем shadowing переменных сейчас.
источник

NL

Nick Linker in Rust — русскоговорящее сообществo
(((Mike Lubinets)))
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=a2107838ccc866822f47af9a90b9a8f1

UPD: наверное нужно пояснение — если бы разделителем везде была точка, этот код бы скомпилировался, не показав пользователю, что тот вызывает не то что хотел.
О, это интересный кейс, спасибо.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Nick Linker
Смотри: джава, скала, котлин, хаскель, питон могут использовать точку в разных контекстах, в чём проблема?
Тебе уже сказали два раза, что надо как-то различать методы deref'а и методы типов.
источник