Size: a a a

2020 November 05

SS

Slava Sokolovsky in Rust Beginners
Artem Khomenko
Как правильнее, сравнивать со ссылкой на константу или разыменовывать ссылку?
f != &0 или *f != 0
Если сравнить первым путем, то f будет взята по ссылке. Вторым - скопируется, если такое возможно, либо владение передастся в место сравнения
По крайней мере, так говорят определения функции
источник

AK

Artem Khomenko in Rust Beginners
Ясно, то есть первый способ более общий, спасибо
источник

IB

Ilya Bogdanov in Rust Beginners
Slava Sokolovsky
Если сравнить первым путем, то f будет взята по ссылке. Вторым - скопируется, если такое возможно, либо владение передастся в место сравнения
По крайней мере, так говорят определения функции
Это не так. Никакого неявного копирования тут происходить не будет, и владение тоже не передается, так как ему попросту неоткуда взяться, если у тебя изначально есть только ссылка. Пример: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=05db02ad6d00f6ae004b8aa0286f450e
Так что можно использовать тот вариант, который эстетически более приятен
источник

IB

Ilya Bogdanov in Rust Beginners
Впрочем, у клиппи есть вот такой линт - но это исключительно вкусовщина https://rust-lang.github.io/rust-clippy/master/#op_ref
источник

JM

John Meow in Rust Beginners
Ну со сравнением ссылок это можно перепутать со сравнением указателей
источник

IB

Ilya Bogdanov in Rust Beginners
John Meow
Ну со сравнением ссылок это можно перепутать со сравнением указателей
Только если ты слишком долго писал на С++
источник

AK

Artem Khomenko in Rust Beginners
Тогда остановлюсь на *f != 0. Разыменовал ссылку, проверил значение. А то как-то неочевидно, что всегда &0 == &0, то есть на всю программу существует только одна константа 0, доступная отовсюду...)
источник

IB

Ivan Boldyrev in Rust Beginners
Artem Khomenko
Тогда остановлюсь на *f != 0. Разыменовал ссылку, проверил значение. А то как-то неочевидно, что всегда &0 == &0, то есть на всю программу существует только одна константа 0, доступная отовсюду...)
Сравнение ссылок в Rust сравнивает и содержимое по ссылке.
источник

AK

Artem Khomenko in Rust Beginners
А, понятно, спасибо
источник

IB

Ilya Bogdanov in Rust Beginners
Ivan Boldyrev
Сравнение ссылок в Rust сравнивает и содержимое по ссылке.
Вернее, только содержимое, адрес ссылки не сравнивается
источник

SL

S. L. in Rust Beginners
Tommy
Я сам читаю Клабника, там это в начале, вообще отлично читается/усваивается
https://doc.rust-lang.ru/book/ ты про эту книгу?
источник

SL

S. L. in Rust Beginners
или про эту?
источник

SS

Steel Sword in Rust Beginners
S. L.
или про эту?
А норм книжка?
источник

SL

S. L. in Rust Beginners
Steel Sword
А норм книжка?
эту не читал еще
источник

SL

S. L. in Rust Beginners
думаю, что Томми про нее говорил
источник

/

/bin/cat in Rust Beginners
Почему в расте нет named параметров для tuple структур?
источник

/

/bin/cat in Rust Beginners

struct Vec3<T: Copy>(x: T, y: T, z: T);

self.x работает
Vec3(1.0, 2.0, 3.0) тоже
источник

JM

John Meow in Rust Beginners
/bin/cat
Почему в расте нет named параметров для tuple структур?
Потому что для именованных есть обычные структуры?
источник

/

/bin/cat in Rust Beginners
destruct как-то не очень получается
источник

/

/bin/cat in Rust Beginners
Или руками нужно писать Vec3::new
источник