Berkus
callback может получать эту ссылку в рантайме?
Kerrigan
намекаешь передавать туда трейт через Option и дергать ссылку через него каждый раз?
Berkus
намекаю передавать объект по ссылке в колбэк
Berkus
fn callback(x: &BuiltObject)
Kerrigan
я не могу просто так передать ссылку, потому что ее еще нет при указании этого колбека
Kerrigan
в джаваскрипте это нормально
Berkus
ну да, передаваться она будет когда ты объект создашь, очевидно
Kerrigan
мб через rc::Weak сделать
Berkus
но это не капчур, поэтому в этом месте тебе объект и не нужен
Kerrigan
в плюсах обычно так циклические ссылки решают
Berkus
тут нет циклических ссылок
Kerrigan
есть
Kerrigan
есть объект A, метод билдера создает ему поле, в методе идет обращение к объекту A
Kerrigan
пока вижу решение сначала создать объекты, а потом уже развешивать колбеки отдельно
Berkus
а, ну если так билдер проектировать, то конечно
Kerrigan
да вот или всё через Option делать или так
Маjко
Через option вроде как канон
Маjко
И геморроя там меньше
Kerrigan
т.е. он идиоматически вместо null?
Маjко
Rc/Weak в билдере это имхо оверкилл
Маjко
Kerrigan
я начинаю думать, что раст это хреново накрытая газетой сишка
Маjко
Начинаешь понимать суть
Kerrigan
Berkus
не влезая в диапазон собственно типа
Berkus
ты думаешь что это газета, а это на самом деле начищенные ботиночки
Маjко
Roma
В данном случае этот колбэк может когда-нибудь получить None в рантайме? Чот кажется, что лучше в build всё создать и навесить
Kerrigan
да, может
Kerrigan
это же джаваскрипт
Αλεχ
который типа валидное значение
Αλεχ
а на самом деле хуй
Kerrigan
https://github.com/uwplse/crust лолшто
Kerrigan
> dependencies
> GHC 7
> Ocaml
Roma
Ну а чо, думал сишку без монад и эффектов сгенерить выйдет?
Kerrigan
мде, теперь я не влезаю в лимит рекурсии
Αλεχ
неограниченная рекурсия есмь зло
Kerrigan
я не знаю что этот черный ящик там творит, чтобы получить жс на выходе
Berkus
он творит жс и зло
Kerrigan
такс, макрос js! не ставит автоматических точек с запятой
Αλεχ
это же жс
Αλεχ
там нет точек с запятой
Kerrigan
в обычном жс есть
Berkus
ну современный жс без них норм справляется
Berkus
там только пара эджкейсов где всё ломается
Nikita
Nikita
Kerrigan
Cat
Это разве нет от llvm зависит?
Berkus
ну так инлайн-то включи, и не останется от твоего кода ничего
Berkus
за спиды он борется с inline(never) ага
Berkus
ну там специально так задумано чтобы биткод между несколькими файлами тоже можно было оптимизировать
Berkus
а когда inline(never) то нельзя, ни в одном, ни в нескольких, вообще никак
Nikita
он выглядит как говно, или работает как говно?
Cat
Nikita
Cat
В книге по-моему есть глава про это
Cat
Про dynamic dispatch representation: https://doc.rust-lang.org/1.0.0-beta/book/static-and-dynamic-dispatch.html#representation
Cuno
индекс без проверок через итераторы
big
Друзья, у меня есть задача набенчмаркить wasmi. Вопрос в том какие именно бенчмарки заюзать. С бенчами которые тестируют дегенеративные кейсы я как нибудь разберусь, а вот с бенчами из реального мира я надеюсь мне поможет коллективный разум
ограничения:
- Интересно ветвление и операции с памятью. Чистая арифметика интересна меньше
- Желательно no_std или возможность компилирования в wasm
- Желательно не тащить за собой мегабайты тестовых данных
- Крайне желательно на Rust'е
- Single Thread only
Kerrigan
такс, сейчас смертельный номер, я засовываю этот джаваскрипт в мобилку
doc
меняет
Kerrigan
посоны, оно работает, ааааа
Kerrigan
раст, скомпиленный в асмжс, который запускается на мобилке, для работы в диком китайском фреймворке
Kerrigan
wikitude
Berkus
Kerrigan
что дали - с тем работаю
Kerrigan
из странных вещей:
если в макрос js! насовать слишком много выражений джаваскрипта - оно почему-то вылетает с переполненнием рекурсии
კაცი
а что их там запоминать?
Kerrigan
Kerrigan
все эти ok_or unwrap_or и прочее
Berkus
— Бог ответил что-нибудь?
— Он никогда не отвечает...
Vladimir
это в русте?
Alex
#Вопрос :
Господа, есть ли элегантный способ зафигачить такое в константу?
const PROTOCOL: &'static str = "https:";
const HOST: &'static str = "example.com";
pub(crate) const URI: String = format!("{proto}://{host}/some/uri/", proto = PROTOCOL, host = HOST);
error: constant contains unimplemented expression type.
https://play.rust-lang.org/?gist=455620836399678c1d1666fe4d8e161a&version=stable&mode=debug
Alexey
Cat
Alex