Anonymous
да?
Денис
ну я думаю, что идея такая, что публичные конструкторы будут устроены таким образом, чтобы невозможно было создать пустую мапу/сет
Денис
но блядь, я хочу, чтобы это сука гарантировалось на уровне типов =)
Денис
чтобы просто физически было невозможно проебаться и где-то забыть проверить, а не пустую ли нам подсунули мапу
Berkus
Berkus
если ты создал хуевый тип то он гарантирует это хуево, тут какбэ
Anonymous
ты создаешь тип, который это и гарантирует.
в том то и дело что ты его создаешь
Vladimir
На чистом коде пишите, и не будет мороки
Денис
Физически можно даже на типах, вот тебе код сверху
*с поправкой на ансейф и прочую байтомагию ))
Anonymous
в том то и дело что ты его создаешь
если на типах то ты его вообще создать не можешь вообще, компилятор не даст
Berkus
в том то и дело что ты его создаешь
эээ ну да, ты создаешь новый тип каждый раз когда пишешь struct NNN; что тебе не нравится то?
Денис
эээ ну да, ты создаешь новый тип каждый раз когда пишешь struct NNN; что тебе не нравится то?
то есть на твой взгляд у твоего подхода и у подхода struct NonEmpty<K,V>{first: (K, V), rest: HashMap<K, V>} одинаковые гарантии?
Денис
ok
Berkus
при наличии вменяемой инкапсуляции они работают совершенно одинаково
Vladimir
Парни сами себе не доверяют, хотя чтоб компилятор их проверял
Vladimir
не себе а программистам
Так ток вы тот код пишите который под ассертами
Vladimir
Модераторы, а не программисты
Ivan
это новый вид троллинга тут такой, "Х не реализовать в русте, так как нет зависимых типов!"
Ivan
?
Aleksey
напиши как-нибудь подробное описание, а то я тоже хотел с кролика из раста читать
В целях препарирования кролика в гетерогенной среде сколхозил проект из слегка переделанных примеров кроличьего туториала и примера к rust-amqp. https://github.com/fr0ster/rabbit_hole В принципе бесполезный проект, отправная точка. Кто пользовал кролика, тот и так понимает как можно хелло ворлд написать, а мне оно надо некоторые неясные моменты прояснить
Αλεχ
error: duplicate lang item in crate `std`: `panic_impl`. | = note: first defined in crate `pwasm_std`. error: duplicate lang item in crate `std`: `oom`. | = note: first defined in crate `pwasm_std`. error: aborting due to 2 previous errors error: Could not compile `issue54`.
Αλεχ
как понять, какой крейт пиздит?
Anton
use *? )
Anton
use *? )
в смысле используешь ипорт звездочкой?
Αλεχ
cargo-tree не встает
Αλεχ
импортов нет
Anton
Стейбл?
Αλεχ
нет
Αλεχ
какой стейбл с no_std ты че
Αλεχ
вот код
Αλεχ
#![no_std] extern crate pwasm_ethereum; #[macro_use] extern crate serde_derive; extern crate serde;
Αλεχ
он работает или нет в зависимости от cargo.tomlk
Αλεχ
Так - работает [dependencies] pwasm-std = "0.9.2" pwasm-ethereum = "0.5.1" pwasm-abi = "0.1.3" serde_derive = { version = "1.0.70", default-features = false } serde = { version = "1.0.70", default-features = false }
Αλεχ
А вот так - нет [dependencies] pwasm-std = "0.9.2" pwasm-ethereum = "0.5.1" pwasm-abi = "0.1.3" pwasm-abi-derive = "0.1.3" serde_derive = { version = "1.0.70", default-features = false } serde = { version = "1.0.70", default-features = false }
Αλεχ
то есть добавил пару левых крейтов - всё сломалось
Αλεχ
ага, в std
Αλεχ
только схуяли std тянется?
Anton
Левый крейт импортирует std::oom ?
Αλεχ
если закоментить serde всё тоже работает
Αλεχ
эти крейты в no_std нормально пашут
Anton
было что то похоже
Anton
е
Anton
там пакеты ссылались на рузные версии модуля
Anton
в результате он инстациировался два раза
Anton
по разу в каждой версии
Anton
но у тебя с какого то std
Anton
причем если выключить радомный крейт - оно работает =)
Αλεχ
Если кто захочет локально проверить, собирать через cargo build --release --target wasm32-unknown-unknown [package] name = "issue54" version = "0.1.0" authors = ["Psilon <pzixel@gmail.com>"] [dependencies] pwasm-std = "0.9.2" pwasm-ethereum = "0.5.1" pwasm-abi = "0.1.3" pwasm-abi-derive = "0.1.3" serde_derive = { version = "1.0.70", default-features = false } serde = { version = "1.0.70", default-features = false } [lib] crate-type = ["cdylib"] [profile.release] panic = "abort" lto = true opt-level = "z"
Anton
никак не компилится
Anton
error: function should have one argument --> /home/anton/.../panic.rs:100:1 | / pub extern fn oom() -> ! { 101 | | unsafe { ::core::intrinsics::abort() } 102 | | }
Αλεχ
ща залью
Αλεχ
https://github.com/Pzixel/issue54.git
Αλεχ
не работает?
Αλεχ
у меня 1.28
Αλεχ
ща обновлюсь
Αλεχ
https://github.com/rust-lang/cargo/issues/5730 - походу моя проблема
KosBeg
а у меня clippy не билдится Compiling clippy_lints v0.0.212 error[E0369]: binary operation `==` cannot be applied to type `&rustc::hir::PathSegment`ints --> C:\Users\PC\.cargo\registry\src\github.com-1ecc6299db9ec823\clippy_lints-0.0.212\src\utils\hir_utils.rs:121:36 | 121 | !self.ignore_fn && l_path == r_path && self.eq_exprs(l_args, r_args) | ^^^^^^^^^^^^^^^^ | = note: an implementation of `std::cmp::PartialEq` might be missing for `&rustc::hir::PathSegment` error[E0599]: no method named `hash` found for type `rustc::hir::BlockCheckMode` in the current scope --> C:\Users\PC\.cargo\registry\src\github.com-1ecc6299db9ec823\clippy_lints-0.0.212\src\utils\hir_utils.rs:339:17 | 339 | b.rules.hash(&mut self.s); | ^^^^ ... error: aborting due to 28 previous errors Some errors occurred: E0369, E0599. For more information about an error, try `rustc --explain E0369`. error: failed to compile `clippy v0.0.212`, intermediate artifacts can be found at `C:\Users\PC\AppData\Local\Temp\cargo-installS0RZZ4` Caused by: Could not compile `clippy_lints`.
KosBeg
накатать issue или просто ждать?
Αλεχ
просто жди)
Αλεχ
он никогдан е билдится
KosBeg
у меня первый раз за всё время юзания раста ошибка :D
Αλεχ
как ? это
вот так
Αλεχ
если совпадут звезды на небе
KosBeg
судя по всему месяца за полтора 🙃
Αλεχ
то на текущем ночнике он соберется
Αλεχ
но чаще нет
Anton
если совпадут звезды на небе
ну не звезды, а версия клиппи и найтли =)
Денис
хз, давно ставлю клиппи из гита и горя не знаю, обычно все ошибки чинятся супер-оперативно после выкатывания ломающего ночника