Anonymous
trait LengthUnit {} struct Centimetres; impl LengthUnit for Centimetres {} struct Length<U: LengthUnit>(u64, PhantomData<U>);
Anonymous
вроде так
Vladimir
Тоже вариант
Vladimir
Но тут наверное лучше енам?
Anonymous
почему
Anonymous
вводишь такой свой способ измерения
Anonymous
а его нет в енаме
Anonymous
РИП
Loyd
mocktopus - Rust https://docs.rs/mocktopus/0.1.0/mocktopus/
Loyd
Что нашлось
Vladimir
РИП
Не, енам как сюнит структ
Anonymous
всм
Vladimir
Чтобы его не создавали, он же как тип юзается только
Anonymous
🤔
Vladimir
il'ja tshurotshkin: trait LengthUnit {} enum Centimetres{} impl LengthUnit for Centimetres {} struct Length<U: LengthUnit>(u64, PhantomData<U>);
Anonymous
а ну да
Anonymous
хз наверное лишнее ограничение
Vladimir
Хз, на практике просто мало кто знает о пустых енамах, и нет такого разбиения в умах общин
Сережа
поцоны, а как в карго передать статическую библиотеку чтобы с ней линковать полученный в результате бинарник
Сережа
когда линкер берет из статической библиотеки функцию и вставляет в место, где она должна быть в экзешнике это линковка?
Сережа
в расте же как я понимаю для линковки gcc используется?
Vladimir
Ну да статическая линковка поидее. Там какой-то атрибут нужно указать перед блоком extern
Kerrigan
у раста хоть что-нибудь своё есть?
Vladimir
Открой любой байндинг и посмотри
Kerrigan
компилятор от ллвм, линкер от гцц
Vladimir
Компилятор от ллвм
Vladimir
Эхх
Сережа
семантика владения, которая мешает программисту и запрещает вполне валидные комбинации у раста своя
Сережа
нельзя обращаться одновременно к разным ячейкам вектора, это вообще пушка
Сережа
а если хочешь, то используй RefCell и в рантайме считай сколько к одной ячейке одновременно обращаются
Сережа
вот уж you don't pay what you don't use
Сережа
split_at_mut судя по названию должно давать 2 новых вектора
Сережа
по моим внутренним ощущениям
Vladimir
Два слайса
Сережа
а, ну норм
Vladimir
К каждому можешь мутабельно обращаться
Сережа
Cargo.toml //.. rustc-link-search = ["./src/lib"] rustc-link-lib = ["test"] root = "/home/path/to/rust/proyect/" //.. ["./src/lib"] -> place to test.a refence to root потому что так у меня вроде бы не работает
でゲソ
У меня как-то так openal и gtk под виндами не цепляются
Сережа
или там надо libtest.a, я это со стековерфлоу взял
Сережа
https://stackoverflow.com/questions/43826572/where-should-i-place-a-static-library-so-i-can-link-it-with-a-rust-program
Vladimir
Proyect
Vladimir
Нейминг мастер
Vladimir
Почему нельзя начать испольщоаать
Сережа
Понял, спасибо! А куда cargo качает библиотеки из Cargo.toml? Я вижу что этот qml.rs в cc передает -Wl,-Bdynaminc, видимо это определяется его build.rs, и я вижу кучу бинарных qmlrs.rlib в папке с проектом, без указания версии cargo с репозитория напрямую тянет и собирает rlib?
Max
В ~/.cargo вроде
Сережа
что неужели придется документацию читать? не для того я тупел? а как же неявное лучше явного, вот в си плюс плюс скачал сорцы, собрал либу, слинковался с либой - все просто и понятно
Michael
это, наверное, сарказм про с++
Alex
> а как же неявное лучше явного Херня
Alex
не лучше
Даниил
Вроде же наоборот? Или Гвидо не закон)
Alex
что за гвидо такой
Anton
Блэд посоны
Даниил
Гвидо Ван Россум - создатель языка python.
Anton
что за пару лет случилось
Anton
пока у меня линуъа не было
Anton
почему шрифты меньше 13px такие уебанские
Даниил
А шрифты векторные?
Anton
Чот ни смищно нихуя
Сережа
Подитожим, qmlrs, подтянутый cargo действительно лежит в ~/.cargo. Пытался передать либы линкеру через Cargo.toml проекта [target.all] rustc-link-search = ["/home/user/Qt5.9.1-static/lib"] rustc-link-lib = [":libQt5Core.a"] никакого эффекта Через редактирование скрипта build.rs библиотеки(?) qmlrs println!("cargo:rustc-link-lib=static=Qt5Core"); это передает аргумент в rustc, но не в линкер (а нужен он в линкере) println!("cargo:rustc-flags=-l Qt5Core -l Qt5Gui -l Qt5Qml -l Qt5Quick"); внезапно передает линкеру, но после -Wl,-Bdynamic, у меня статические библиотеки, кроме флагов -l и -L никакие не принимает. в оригинальной библиотеке для поиска Qt используется pkg-config (библиотека rust) pkg_config::Config::new().statik(true).probe("Qt5Core Qt5Gui Qt5Qml Qt5Quick").unwrap(); вот так вот удалось передать линкеру статические библиотеки Что я делаю не так? неужели нет простого способа передать в линкер статическую библиотеку?
Anton
причем в винде тоже конченые шрифты
Anton
типо только в маке шрифты всех размеров норм сглаживаются?
Даниил
в питоне дофига explicit
Это протсо фраза из идеологии python. Явное лучше не явного.
Alex
потому питонисты херачат дохуя кода
Сережа
я испытываю НЕУДОБСТВО
Alex
а стоит им показать язык где много implicit
Alex
так они НИХУЯ НЕ ПОНЯТНО ЧЕ ТУТ НАПИСАНО
Сережа
в итоге все падает: This application failed to start because it could not find or load the Qt platform plugin "xcb" in "". Reinstalling the application may fix this problem. [1] 11469 abort ./rustpl но это совсем другая история с Qt5 и системой плагинов
Сережа
лол
Даниил
А из rust есть биндинг к Qt?