Size: a a a

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

2020 October 06

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Нет, они юзают clap для абсолютно всего.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
structopt это дерайв-макрос для clap
источник

/

/bin/cat in Rust — русскоговорящее сообществo
argh тоже хорошая либа
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
https://github.com/TeXitoi/structopt/blob/master/Cargo.toml#L30
Зависимость clap даже не опциональная
источник

V

Vladimir in Rust — русскоговорящее сообществo
Понял, интереесно пав не предлагает это как-то по другому решать. Сам же он не зависит от клепа на сколько я понял
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Потому что трейт StructOpt тупо содержит метод "сделай из меня clap::App"
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
paw это тупо способ для других либ передавать аргументы напрямую в main
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Больше он ничего особо не делает
источник

АГ

Алексей Герасимов... in Rust — русскоговорящее сообществo
Kong Ning Kuan 孔宁宽
Как можно кастануть &[&Type] в &[Type]? У Type нет не Copy, Clone и двигать его нельзя, поэтому храню референсы
Никак тогда, тем более если двигать нельзя. У тебя есть массив указателей, как его можно КАСТАНУТЬ в массив значений? Сами значения черт знает где лежат же
источник

K

Kong Ning Kuan 孔宁宽... in Rust — русскоговорящее сообществo
есть std::slice::from_ref
источник

K

Kong Ning Kuan 孔宁宽... in Rust — русскоговорящее сообществo
Он через unsafe кастует
Так как &[values], здесь values соблюдают семантику передачи по ссылке когда передается ссылка на  массив
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Kong Ning Kuan 孔宁宽
есть std::slice::from_ref
Он берёт ссылку на один элемент. Это важно
источник

K

Kong Ning Kuan 孔宁宽... in Rust — русскоговорящее сообществo
Это да
источник

K

Kong Ning Kuan 孔宁宽... in Rust — русскоговорящее сообществo
Ну значит магии нет
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Каст &[&Foo] в &[Foo] возможен только если все ссылки из массива указывают на расположенные подряд значения Foo, размещенные в одной аллокации.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
А такой инвариант
1) непроверяемый, поэтому такая функция должна быть unsafe-ной
2) ставит полезность этой функции под сомнение
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Mikail Bagishov
А такой инвариант
1) непроверяемый, поэтому такая функция должна быть unsafe-ной
2) ставит полезность этой функции под сомнение
Почему не проверяемый? можно в цикле проверить что у всех соседний ссылок offset=1
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
вафель 🧇
Почему не проверяемый? можно в цикле проверить что у всех соседний ссылок offset=1
А как ты проверишь, что они лежат в одной аллокации?
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Аллокацией в данном случае будет, насколько я понимаю, один выделенный маллоком буфер либо одна переменная на стеке
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Mikail Bagishov
А как ты проверишь, что они лежат в одной аллокации?
Ну, никак, да. Ты прав.
источник