Sherzod
Вообще за троллинг я обеими руками за, но хоть понять бы почему :)
Loo
мде
Loo
պլհկ
меня плз
Anton
Скажите, сколько места занимает пустая строка в расте?
Anton
Я знаю, что в java это около 40 байт
big
как и Vec. - указатель на данные - capacity - len
big
это что касается String
big
&str - ближе к slice. Это означает что он состоит из указателя на данные, и длинны.
big
все это величиной в слово. Для 64 битной машины это соответсвенно 8 байт.
Anonymous
std::mem::size_of::<&str😠) := 16
Судзумия
Anonymous
24
Anonymous
а std::mem::size_of_val("") := 0
Anton
Спасибо!
Судзумия
а std::mem::size_of_val("") := 0
Понятное дело, оно же в коде только ;)
big
а std::mem::size_of_val("") := 0
тут интересно кстати
Anonymous
почему
big
он считает его не как &str
big
а именно как str
Anonymous
size_of_val берет референс
Anonymous
и считает значение на которое он поинтит
big
::std::mem::size_of_val("ab") == 2
big
дада
Bugworm
молча
Anonymous
по TRPL
Safort
В муках.
Anonymous
когда еще второго издания не было
Anonymous
которое значительно проще
Судзумия
Пишешь программы и учишься
Sherzod
Я по переводу
big
Пишешь программы и учишься
удваиваю. TRPL хорошо конечно, можешь даже все понять, но как только начнеш писать проги можно и всосать
Sherzod
rustbyexample
big
ща те накидают
Michael
для начала начал книгу читать, а вот скоро начну утилиты писать
Michael
там смотри что-то и по серьёзней будет
Safort
Ты любишь Go?
Anonymous
контрибьють в существующие проекты
big
я обожаю CHIP-8. Это виртуальная машина из бородатых годов. Она не очень большая, но реализовывая ее можно поработать с многими конструкциями языка. А так же звуком, графикой, файлами, итд
big
есть куча реализаций на любой вкус и цвет, на любом языке
Alex
я на кодеворз лабаю понемногу
Vladimir
когда еще второго издания не было
я вообще без изданий, референсом пользовался(
でゲソ
&code
Vladimir
::std::mem::size_of_val("ab") == 2
круто 2, это работает даже для боксед строк use std::ops::Deref; fn main() { let b = "sadasdsaфывd".to_owned().into_boxed_str(); let c = "sadasdsaфывd".to_owned(); println!("{} = {}", ::std::mem::size_of_val(b.deref()),::std::mem::size_of_val(c.deref()) ); }
Vladimir
забавно 3 есть два кода use std::ops::Deref; pub fn size_str(b:String) -> usize { ::std::mem::size_of_val(b.deref()) } pub fn size_str2(b:String) -> usize { b.bytes().count() } В случае с овнед выхлоп, у первого лучше _ZN7example8size_str17h24e0ccccbcca733dE: push rbp mov rbp, rsp push rbx push rax mov rsi, qword ptr [rdi + 8] mov rbx, qword ptr [rdi + 16] test rsi, rsi je .LBB0_2 mov rdi, qword ptr [rdi] mov edx, 1 call __rust_dealloc@PLT .LBB0_2: mov rax, rbx add rsp, 8 pop rbx pop rbp ret _ZN7example9size_str217hafcd86f6ec7f7d28E: push rbp mov rbp, rsp push rbx sub rsp, 24 mov rax, qword ptr [rdi + 16] mov qword ptr [rbp - 16], rax movups xmm0, xmmword ptr [rdi] movaps xmmword ptr [rbp - 32], xmm0 mov rsi, qword ptr [rbp - 24] mov rbx, qword ptr [rbp - 16] test rsi, rsi je .LBB1_2 mov rdi, qword ptr [rbp - 32] mov edx, 1 call __rust_dealloc@PLT .LBB1_2: mov rax, rbx add rsp, 24 pop rbx pop rbp ret
Vladimir
в случае с реф одинаковый _ZN7example8size_str17h425183a597cfe0d2E: push rbp mov rbp, rsp mov rax, qword ptr [rdi + 16] pop rbp ret _ZN7example9size_str217habc4fe76582c871bE: push rbp mov rbp, rsp mov rax, qword ptr [rdi + 16] pop rbp ret
でゲソ
А пример с реф где?
でゲソ
Дереф отдаст овнаж?
Vladimir
С реф, это когда ссылку перед стрингом добавляешь
Vladimir
Дереф, как трейт, возвращает только ссылку
Vladimir
А вот дереф как оператор возвращает овнед
big
забавно, эту simd хрень rust перестает пихать при -C panic=abort
big
(код size_str2 становится = size_str1)
Vladimir
Ну вот, чёт он плохо оптимизирует паники
big
Но я вот пока не могу смекнуть, че это за код
Vladimir
Я не шарю в симдах вообще
big
походу там обычная копия )
Vladimir
Может инициализация какая-то осталась
Vladimir
Не оптимизированной
big
т.е. берется со стека String и копируется в свой стек фрейм )
big
Я не шарю в симдах вообще
ето не беда. Попробуй https://godbolt.org/g/TsR9t1
big
там есть референс удобный
Loo
https://github.com/jq-rs/mles-rs
Loo
https://github.com/hawkw
Loo
нашёл вам сочную
Loo
Kerrigan
> witch это точно не трап?
Kerrigan
вроде по описанию всё норм
Маjко
պլհկ
Loo
она ось там писала
Loo
ступид ос
Loo
а что сделал ты
Loo
тупой немощный неандерталец
Loo
Loo
ту претти век
պլհկ
Вставил мд5 в лмдб