Size: a a a

Rust — русскоговорящее сообществo

2020 August 26

R

Roman in Rust — русскоговорящее сообществo
Кирилл
Я, вроде, разобрался. Mutex даёт типу, реализующему Send, ещё и Sync.
Примерно так, да Mutex<impl Send>: Send + Sync
источник

R

Roman in Rust — русскоговорящее сообществo
А вот RwLock так не делает
источник

К

Кирилл in Rust — русскоговорящее сообществo
Roman
Примерно так, да Mutex<impl Send>: Send + Sync
источник

R

Roman in Rust — русскоговорящее сообществo
Я то же самое сказал :)
источник

К

Кирилл in Rust — русскоговорящее сообществo
Roman
Я то же самое сказал :)
Я подтвердил кодом)
источник

К

Кирилл in Rust — русскоговорящее сообществo
Roman
А вот RwLock так не делает
Это потому что может быть параллельный доступ по иммутабельным ссылкам?
источник

R

Roman in Rust — русскоговорящее сообществo
Верно
источник

RP

Roman Proskuryakov in Rust — русскоговорящее сообществo
У меня есть
1) no_std растолиба crate-type=staticlib/cdylib, я в ней генерю ffi символы.
2) есть растовые биндинги к этой либе, которые превращают C-like API в нормальный вид
3) линковка динамической библиотеки в биндингах работает, а статической - нет, с ошибкой multiple definition of `__rust_alloc'

как мне починить эту ошибку?
источник

R

Roman in Rust — русскоговорящее сообществo
А не rlib вместо staticlib нужно тебе?
источник

K

Kitsu in Rust — русскоговорящее сообществo
Roman Proskuryakov
У меня есть
1) no_std растолиба crate-type=staticlib/cdylib, я в ней генерю ffi символы.
2) есть растовые биндинги к этой либе, которые превращают C-like API в нормальный вид
3) линковка динамической библиотеки в биндингах работает, а статической - нет, с ошибкой multiple definition of `__rust_alloc'

как мне починить эту ошибку?
источник

K

Kitsu in Rust — русскоговорящее сообществo
Roman
А не rlib вместо staticlib нужно тебе?
но rlib же не заюзаешь из сишки
источник

RP

Roman Proskuryakov in Rust — русскоговорящее сообществo
Roman
А не rlib вместо staticlib нужно тебе?
я же действительно красивый сишный API предоставляю
источник

RP

Roman Proskuryakov in Rust — русскоговорящее сообществo
просто подумал, что к этому сишному АПИ я еще могу и растовый прикрутить, но встретил непреодолимые препятствия)
источник

RP

Roman Proskuryakov in Rust — русскоговорящее сообществo
ну так и как быть?
источник

V

Vladimir in Rust — русскоговорящее сообществo
Roman Proskuryakov
ну так и как быть?
Юзать dylib/rlib?
источник

K

Kitsu in Rust — русскоговорящее сообществo
Roman Proskuryakov
ну так и как быть?
вообще хз, но можно попробовать вынести rlib для растича и поверх нее натянуть staticlib для C FFI
источник

RP

Roman Proskuryakov in Rust — русскоговорящее сообществo
Vladimir
Юзать dylib/rlib?
dylib работает. я хочу статиклиб, который не работает
источник

RP

Roman Proskuryakov in Rust — русскоговорящее сообществo
rlib в сишку не поставишь
источник

DF

Dollar Føølish in Rust — русскоговорящее сообществo
Есть опция линкера что делать с undefined символами, возможно есть похожая типа что делать с defined symbols, когда несколько дефинишнов. Как известно сишный инлайн обходит это помечая символ через weak, но вряд ли такой трюк возможен с __rust_alloc
источник

DF

Dollar Føølish in Rust — русскоговорящее сообществo
Есть моя догадка что если включить lto , то линкер будет более агрессивно вырезать дубликаты, попробуй может быть
источник