Size: a a a

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

2020 November 30

YB

Yevhenii Babichenko in Rust — русскоговорящее сообществo
polunin.ai
инкрементальная компиляция при изменении чего-то в роутах warp увеличивается с 11 секунд до 21, при том что из изменений - добавление пяти роутов. это нормально?
Да, если ты не оборачиваешь всё подряд в .boxed()
источник

YB

Yevhenii Babichenko in Rust — русскоговорящее сообществo
Особенности местной кухни https://github.com/seanmonstar/warp/issues/32
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
polunin.ai
у CString нет возможности преобразования в *mut c_char, как я понял
А into_raw() чем не подходит?
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Странно что нет метода, который просто возвращал бы мутабельный указатель, но вроде никто не мешает позвать into_raw(), запомнить указатель и сразу же вызвать from_raw()
источник

r

red75prime in Rust — русскоговорящее сообществo
polunin.ai
как создать мутабельную C-строку? мне нужен *mut c_char
Сделать Vec<c_char> (или массив) и отдать .as_mut_ptr() в C-код. Потом сделать из вектора CString
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Mikail Bagishov
А into_raw() чем не подходит?
а, да, он. чето не заметил его. спасибо.
источник

r

red75prime in Rust — русскоговорящее сообществo
polunin.ai
а, да, он. чето не заметил его. спасибо.
C-код не должен менять длину строки. То есть трогать нулевой байт
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
red75prime
C-код не должен менять длину строки. То есть трогать нулевой байт
Ну если ты за аллокацию улетишь, то тебе в любом случае будет плохо
источник

r

red75prime in Rust — русскоговорящее сообществo
вафель 🧇
Ну если ты за аллокацию улетишь, то тебе в любом случае будет плохо
Это из документации: It should be noted that the length isn't just "recomputed," but that the recomputed length must match the original length from the CString::into_raw call. This means the CString::into_raw/from_raw methods should not be used when passing the string to C functions that can modify the string's length.
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
red75prime
Это из документации: It should be noted that the length isn't just "recomputed," but that the recomputed length must match the original length from the CString::into_raw call. This means the CString::into_raw/from_raw methods should not be used when passing the string to C functions that can modify the string's length.
я к тому, что не могу придумать структуру которая бы позволяла неограниченно менять длинну
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
red75prime
Это из документации: It should be noted that the length isn't just "recomputed," but that the recomputed length must match the original length from the CString::into_raw call. This means the CString::into_raw/from_raw methods should not be used when passing the string to C functions that can modify the string's length.
хм, а почему такое ограничение? Звучит достаточно странно
источник

r

red75prime in Rust — русскоговорящее сообществo
вафель 🧇
я к тому, что не могу придумать структуру которая бы позволяла неограниченно менять длинну
Это само собой, но into_raw/from_raw вообще не позволяет её менять.
источник

r

red75prime in Rust — русскоговорящее сообществo
вафель 🧇
хм, а почему такое ограничение? Звучит достаточно странно
Возможные проблемы при деаллокации Box<[u8]>, если его длина была изменена, скорее всего.
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
red75prime
Возможные проблемы при деаллокации Box<[u8]>, если его длина была изменена, скорее всего.
а, там коробка...

Ну тогда да, видимо в этом дело
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Ну т.е. это примерно проблема с вылезанием за аллокацию и есть, только тут ещё и меньше тоже нельзя т.к. длинна аллокации считается по первому нулю
источник
2020 December 01

D

Dmitry in Rust — русскоговорящее сообществo
Как вариант, спасибо
источник

MK

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

IG

Igor Gulamov in Rust — русскоговорящее сообществo
Наткнулся на такую странную проблему при сборке no_std пакета:

```
Compiling sp-io v2.0.0
 error[E0152]: found duplicate lang item panic_impl
     --> /Users/snjax/.cargo/registry/src/github.com-1ecc6299db9ec823/sp-io-2.0.0/src/lib.rs:1277:1
      |
 1277 | pub fn panic(info: &core::panic::PanicInfo) -> ! {
      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      |
      = note: the lang item is first defined in crate std (which num_traits depends on)
```

num_traits используется в proc-macro пакете только в кодогенерации. Разве импорты макросов могут как-то влиять на работу компилятора после препроцессинга?
источник

f

folex in Rust — русскоговорящее сообществo
А есть какой-то удобный комбинатор для
let a = match a { 
   Ok(a) => a,
   Err(a) => a
}

?

У меня периодически Result<json::Value, json::Value>, интересно, есть ли что-то в std.
источник

K

Kitsu in Rust — русскоговорящее сообществo
.unwrap_or_else(std::convert::identity)
источник