Αλεχ
вы мне лучше объясните вот это
Αλεχ
Alex@ZPC MINGW64 ~/Documents/Rust/boyan_detector_bot (feature/mutiple_chats)
$ cargo fmt
error: toolchain 'nightly-2018-06-28-x86_64-pc-windows-gnu' does not have the binary `cargo-fmt.exe`
Alex@ZPC MINGW64 ~/Documents/Rust/boyan_detector_bot (feature/mutiple_chats)
$ cargo --version
cargo 1.29.0-nightly (2cd36b4ed 2018-07-25)
Alex@ZPC MINGW64 ~/Documents/Rust/boyan_detector_bot (feature/mutiple_chats)
$ rustup component add rustfmt-preview --toolchain nightly-x86_64-pc-windows-gnu
info: component 'rustfmt-preview' for target 'x86_64-pc-windows-gnu' is up to date
Денис
Αλεχ
он с какого-то хуя собирает под 06-28
Αλεχ
Αλεχ
он должен на последнем найтли собирать
Αλεχ
тулчейн-файла нет
Αλεχ
а сука
Αλεχ
$ rustup toolchain list
stable-x86_64-pc-windows-gnu
nightly-2018-06-28-x86_64-pc-windows-gnu (default)
nightly-2018-06-28-x86_64-pc-windows-msvc
nightly-2018-07-24-x86_64-pc-windows-msvc
nightly-x86_64-pc-windows-gnu
Αλεχ
понятно
Αλεχ
обновил компилятор - дефолт сбрсоился
Αλεχ
warning: it is more idiomatic to loop over references to containers instead of u sing explicit iteration methods
--> imagedb\src\lib.rs:104:43
|
104 | for &(ref image, ref metadata) in self.images.iter() {
| ^^^^^^^^^^^^^^^^^^ help: to writ e this more concisely, try: `&self.images`
|
= note: #[warn(explicit_iter_loop)] on by default
= help: for further information visit https://rust-lang-nursery.github.io/ru st-clippy/v0.0.212/index.html#explicit_iter_loop
Αλεχ
хмм
Αλεχ
тут кто-то затирал, что лучше iter или мне кажется?
Денис
оооо, так в клиппи этого нет, потому что это завезли в компилятор!
Денис
а блин, это и есть клиппи
Αλεχ
https://play.rust-lang.org/?gist=8bb8500976a9f84a9f35b35c8ff9d29d&version=stable&mode=debug&edition=2015
Αλεχ
чет он тупой какой-то
Αλεχ
предлагает Default который уже есть
Αλεχ
да
Αλεχ
я сначала подумал что ему констрейнт не нравится
Αλεχ
но он просто с ними не дружит
Денис
лол, если вручную заимплементить Default, то варнинга нет
Денис
Αλεχ
нет
Αλεχ
я не люблю where если там не километровое определение
Денис
причём здесь where?
Αλεχ
тогда о чем речь?
Денис
про generic bound при объявлении типа
Денис
struct Lol<Wut: Debug> { ... }
Денис
ну то есть иногда это оправдано, особенно если ты юзаешь associated types из баунда, но обычно — нафиг не нужно
Денис
Roma
Roma
Debug требовать может быть странно, но в целом зависит же от того что за типа у тебя и чо за баунды
Денис
Roma
это, кстати, бесит; могли бы по умолчанию брать из структурки
Roma
но ок, твой пойнт — саму структурку держать чистой, а баунды только в импл? и чо так часто делают?
Αλεχ
Αλεχ
Αλεχ
если у тебя есть ограничение на структуре
Αλεχ
ты должен везде совать
Αλεχ
Денис
но это так и есть
ну в твоём случае с Clone, который ты убрал, это не "необходимо" =) тебе достаточно сделать баунд в impl-блоке, причём только для тех методов, где этот клон нужен
Αλεχ
Αλεχ
для 100% методов
Денис
ну твоему методу new он не нужен, например :)
Αλεχ
ага
Денис
плюс этого подхода в том, что пользователю API будет сразу понятно, какие конкретно методы могут делать клонирование
Αλεχ
можно создать объект, только с ним ничо сделаь нельзя
Αλεχ
хз
Αλεχ
мне кажется ты не совсем прав
Денис
ну такое, minor thing, конечно
Αλεχ
если у тебя нет полезных методов без констрейнта
Αλεχ
то надо его делать на стурктуре
Денис
ну вот например https://doc.rust-lang.org/std/collections/struct.HashSet.html
Roma
Денис
Roma
а чот клиппи на меня не наорал за это %(
Αλεχ
да понятное дело, что структура может быть полезной для любых типов Т
Αλεχ
а для конкретных реализовывать дополнительный функционал
Αλεχ
но в моем случае для любых типов не реализующих трейт структура бесполезная
Loyd
Чёт спор про монорепы поутих
Loyd
Но я отмечу, что есть промежуточный вариант — монорепа с крейтами, а они друг от друга по версиям уже.
Loyd
Ну, подход lerna и прочих
Loyd
С одной стороны нет хуйни, когда из одной части кода хер пойми что импортируется (а это дело очень любят, удобненько же). С другой, не надо заводить дублирующие ПРы, если репы однотипные (скажем, проекты одинаковые параллельно делаются и надо везде что-то добавить)
Loyd
Но подход больше для развесистых либ, вроде serde или babel-я, нежели для проектов
Денис
Loyd
второй-то не игрушечный)
Loyd
А
Loyd
Ну это просто не совсем то, что понимают под "монорепой" в, например, яндексе
Vladimir
А там чё за говно? Просто думал что в контексте раста ток так
magras
При размещении баундов на структуре сообщение об ошибке менее запутано. Конечно если речь идет о максимально обощенном коде, то да лучше уменьшать скоуп, но мне чаще встречауется код, где первое предпочтительнее.
でゲソ
でゲソ
でゲソ
чяднт