Size: a a a

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

2020 September 30

m

mAX in Rust — русскоговорящее сообществo
он вообще может UB кидать.. следовательно там в рантайме что-то детектят)
источник

Э

Эрик in Rust — русскоговорящее сообществo
Andrey Vlasov
Что такое IsPrimitive?
Да любой sealed маркер-трейт, заимплеменченный только для примитивов.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
mAX
он вообще может UB кидать.. следовательно там в рантайме что-то детектят)
Это пофикшено уже
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Ну и as каст тайпчекается статически, но в рантайме выполняет нетривиальные преобразования если надо
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Mikail Bagishov
Это пофикшено уже
По сути это был баг в компиляторе
источник

m

mAX in Rust — русскоговорящее сообществo
Эрик
Можно. Берёшь Into<u64> + IsPrimitive какой-нибудь.
вот я такое и ищу IsPrimitive чтобы оно могло as другой IsPrimitive делать
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Эрик
Да любой sealed маркер-трейт, заимплеменченный только для примитивов.
В num такого нет, ничего не знаю
источник

Э

Эрик in Rust — русскоговорящее сообществo
mAX
вот я такое и ищу IsPrimitive чтобы оно могло as другой IsPrimitive делать
Да нет такого, блет, трейты не могут пока в const.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Andrey Vlasov
В num такого нет, ничего не знаю
macro_rules! is_prim {
($($t:ty)*) => {
 mod seal { pub trait Sealed {} }
 pub trait IsPrimitive: seal::Sealed {}
 $(
 impl seal::Sealed for $t {}
 impl IsPrimitive for $t {}
 )*
};
}

is_prim!(u8 i8 u16 i16 u32 i32 u64 i64 u128 i128 usize isize f32 f64);

fn as_u64<T: Into<u64> + IsPrimitive>(t: T) -> u64 { t.into() }

Не знает он, блет.
источник

m

mAX in Rust — русскоговорящее сообществo
Понятно, спасибо!) Могу захардкодить свой тип, но интересно было разобраться можно ли делать подобное
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Эрик
macro_rules! is_prim {
($($t:ty)*) => {
 mod seal { pub trait Sealed {} }
 pub trait IsPrimitive: seal::Sealed {}
 $(
 impl seal::Sealed for $t {}
 impl IsPrimitive for $t {}
 )*
};
}

is_prim!(u8 i8 u16 i16 u32 i32 u64 i64 u128 i128 usize isize f32 f64);

fn as_u64<T: Into<u64> + IsPrimitive>(t: T) -> u64 { t.into() }

Не знает он, блет.
Забавно, ведь твой IsPrimitive даже не sealed
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
(Чтобы трейт стал sealed, нужно написать pub trait IsPrimitive: seal::Sealed)
источник

Э

Эрик in Rust — русскоговорящее сообществo
Andrey Vlasov
(Чтобы трейт стал sealed, нужно написать pub trait IsPrimitive: seal::Sealed)
Да, спасибо, забыл уже.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Но вообще, для внутреннего пользования можно и опустить seal.
источник

♚Inojelis in Rust — русскоговорящее сообществo
Как в Actix отправлять текст на все клиенты по вебсокетам?
источник

MF

Max Frai in Rust — русскоговорящее сообществo
♚Inojelis
Как в Actix отправлять текст на все клиенты по вебсокетам?
нужно складывать хендлеры в какой-то вектор и потом просто циклом проходить и слать каждому
источник

♚Inojelis in Rust — русскоговорящее сообществo
Max Frai
нужно складывать хендлеры в какой-то вектор и потом просто циклом проходить и слать каждому
я имею ввиду метод чтобы послать текст.
типа send()
источник

♚Inojelis in Rust — русскоговорящее сообществo
в доках такого метода нету
источник

MF

Max Frai in Rust — русскоговорящее сообществo
А чем делаешь вебсокеты?
источник

MF

Max Frai in Rust — русскоговорящее сообществo
Там есть на акторах, но можно и другие либы использовать
источник