Vladimir
Чё эт писать ещё либ ц на расте
Судзумия
Осталось только узнать, зачем
Судзумия
Vladimir
Ну бд не мастхэв
Cuno
Сейчас все делают серваки поверх полуабстрактных интерфейсов, реализованных для основных ОС. В чем проблема вообще полагаться на ОС?
Cuno
Если есть код, то есть дыры. Думаешь свой велосипед будет менее дырявым?
LexsZero
прям в железку - это в плисину штоле?
LexsZero
на распберри обычный прыщелинукс
Vladimir
Там можно ос запустить
LexsZero
и то, что написание хттп-сервера на русте под распберри ничем не отличается от написания хттп-сервера на русте под любую другую платформу где есть линукс и которая поддерживается растом
Vladimir
Эт не железка вообще
LexsZero
ну, строго говоря, линукс можно и не запускать
LexsZero
но его можно и на пеке не запускать
LexsZero
но так никто не делает
LexsZero
можно
LexsZero
очень.
Vladimir
Железка это микрухи максимум, тогда всё можно железкой нажвать
LexsZero
"очень" это ответ на вопрос "насколько"
Судзумия
А что является мерой оценки?
Vladimir
Я тебе описал что нужно
Vladimir
Это большой объем работы
Судзумия
Надо писать очень много низкоуровневого кода
Vladimir
Вот и всё
Vladimir
ПК тоже железка
Vladimir
Но с такой логикой "программировать железки" можно только про плисы сказать
LexsZero
а как же программирование переключателями на передней панели?
Vladimir
Скомпоновать - отладить больше проблем. А что там с архитектурой?
Vladimir
Ну блин в написании сервера вряд-ли будет много каких-то архитектурно зависимых частей
Vladimir
Всё слишком хай левел
LexsZero
по каким параметрам грустнее?
LexsZero
не надо
Vladimir
Найди ещё раз осознай
Vladimir
И перескажи в двух словах
Маjко
Что вы тут устроили?
Маjко
Ясен хер написать свою ось под голое железо, для нее TCP/IP стек и поверх этого еще и вебсервер — будет пиздец геморно
Маjко
Че за вопросы
Anonymous
кто-нибудь уже курил wasm? хули undefined?
Anonymous
#[no_mangle] pub fn suka() -> String { return String::from("Hello, web assembly!"); } #[no_mangle] pub fn run() -> i32 { return 10; }
Anonymous
<!DOCTYPE html> <html> <head> <title>Test</title> <script> fetch('lib.wasm') .then(response => response.arrayBuffer()) .then(bytes => WebAssembly.instantiate(bytes, { 'env': {} })) .then(results => { console.log(results.instance.exports.suka()); console.log(results.instance.exports.run()); }); </script> </head> <body> </body> </html>
Max
JS не понимает строки Раста Там вроде CString возвращать нужно
Anonymous
ясно
Max
https://github.com/Ralvke/rust-loader Извините, я тоже на хайпе
big
кто-нибудь уже курил wasm? хули undefined?
wasm для FFI умеет только в типы i32, i64, f32, f64, ну и "void". как наложится "pub fn suka() -> String" на этот ffi — я хз но что-то мне подсказывает, что после nrvo получится что-то вроде void suka(void *retval), это могло бы обьяснить undefined (при предположении что retval какимто дерьмом заполнится)
big
тут вообще ебучка получается с ABI, у раста оно не специфицировано, AFAIK
big
поэтому лучше воспользоваться extern "C"
big
а это означает что String не вернешь, поэтому нужно возвращать c-str
big
CString там не вернуть по той же причине. Насколько я помню, &CStr тоже еще не вернуть, т.к. он все еще толстый
big
так что придется возвращать скрее всего *const u8 на стороне JS нужно будет получить этот поинтер, в виде i32, и потом сконструировать строку считав ее из памяти
big
если используется emscripten можно попробовать воспользоваться ccall/cwrap
Kerrigan
о, с вебассембли я наконец-то смогу написать нетормозящее расстояние левенштейна
Matwey
Господа
Matwey
У меня есть генерик тип My<T>
Matwey
Я хочу для трех конкретных типов My<A> My<B> My<C> реализовать типаж Tr
Matwey
Могу ли я сначала частично реализовать этот типаж для всех My
Matwey
?
Matwey
Чтобы потом переиспользовать функции?
Matwey
Или придется выдумать новый типаж?
Matwey
Как вообще работает резолвинг реализаций?
Matwey
impl<T> Tr for My<T> { } impl Tr for My<A> { }
Matwey
?
Сережа
это называется специализация
Сережа
в стабильном расте этого нет
Сережа
мне здесь говорили, что в найтли есть
Сережа
хочешь, расскажу как это в си плюс плюс разрешается?
Сережа
https://play.rust-lang.org/?gist=81a0c7ad92a6edd22cda327f7f9061bd&version=nightly
Сережа
как это в расте разрешается и не важно, потому что это в найтли, еще поменяют десять раз
kitsu
а несколько вложенных if-let конструкций все так же не упрощены?
kitsu
https://play.rust-lang.org/?gist=33622fa92ca9bd37fd31d63d84d8c92f&version=stable что-то типо этого, только для более общего случая Понятно, что можно вложенные Some(Some(..)), но это не всегда работает
Vladimir
не думаю что это про сабж
kitsu
Скорее это https://github.com/rust-lang/rfcs/issues/929
Крылатый
Vladimir
ну && вроде есть, просто нельзя лет делать и анализировать то что только только забиндили
Vladimir
Мне кажется если у тебя структуры, то можешь вложенные делать по аналогии с Some(Some(..)) а так можешь еще сделать плоский код let a = if let Some(a) = Some(Some(3)) { a } else { return; }; if let Some(b) = a { println!("{}", b); }
Anton
http://www.opennet.ru/opennews/art.shtml?num=47670
Anton
https://github.com/system76/firmware-update
Anton
Тулза на расте