Size: a a a

2020 December 31

EG

Emmanuel Goldstein in rust_offtopic
Выносишь лейаут в аутпут трейта
источник

D

Dima in rust_offtopic
Emmanuel Goldstein
Делаешь трейт, пишешь у него where size < n, делаешь у трейта output
струтура то одна
источник

EG

Emmanuel Goldstein in rust_offtopic
Dima
струтура то одна
struct Smth<T> {
   inner: <(T, usize) as Compare<IfLess, IfEqual, IfGreater>>::Output,
}
источник

D

Dima in rust_offtopic
Emmanuel Goldstein
struct Smth<T> {
   inner: <(T, usize) as Compare<IfLess, IfEqual, IfGreater>>::Output,
}
это же ненастоящий синтаксис, ифами на уровне компилятора я бы тоже смог разрулить, ладно это все было в контексте https://github.com/twissel/clht-rs , она и так  более чем быстра
источник

EG

Emmanuel Goldstein in rust_offtopic
Dima
это же ненастоящий синтаксис, ифами на уровне компилятора я бы тоже смог разрулить, ладно это все было в контексте https://github.com/twissel/clht-rs , она и так  более чем быстра
Синтаксис-то настоящий
источник

EG

Emmanuel Goldstein in rust_offtopic
Вопрос в том, как реализовать трейт Compare
источник

EG

Emmanuel Goldstein in rust_offtopic
Если бы в where можно было написать сравнение, то остальное понятно
источник

D

Dima in rust_offtopic
Emmanuel Goldstein
Если бы в where можно было написать сравнение, то остальное понятно
мне не совсем
источник

EG

Emmanuel Goldstein in rust_offtopic
Dima
мне не совсем
Пишем
impl<T1, T2, L, E, R> Compare<L, E, R> for (T1, T2) where {size_of::<T1>() < size_of::<T2>()} {
   type Output = L;
}
источник

EG

Emmanuel Goldstein in rust_offtopic
И дальше как я написал
источник

D

Dima in rust_offtopic
Emmanuel Goldstein
Пишем
impl<T1, T2, L, E, R> Compare<L, E, R> for (T1, T2) where {size_of::<T1>() < size_of::<T2>()} {
   type Output = L;
}
нет, если я тебя правтльно понял, мне нужно, if T < N  then struct Mstruct<T>  {  fields : ...  } else  Mstruct<otherfields: ...>
источник

EG

Emmanuel Goldstein in rust_offtopic
Dima
нет, если я тебя правтльно понял, мне нужно, if T < N  then struct Mstruct<T>  {  fields : ...  } else  Mstruct<otherfields: ...>
Ну дык
Ты делегируешь через Output в полностью разные структуры
источник

EG

Emmanuel Goldstein in rust_offtopic
И дальше там делаешь что хочешь
источник

D

Dima in rust_offtopic
Emmanuel Goldstein
Ну дык
Ты делегируешь через Output в полностью разные структуры
я не очень  понимаю как код мою либу будет использовать
источник

EG

Emmanuel Goldstein in rust_offtopic
Dima
я не очень  понимаю как код мою либу будет использовать
У тебя в интерфейсе будет просто Smth<T>, у которой в единственном поле лежит настоящая структура
источник

EG

Emmanuel Goldstein in rust_offtopic
Внешнему коду пофиг
источник

D

Dima in rust_offtopic
Emmanuel Goldstein
У тебя в интерфейсе будет просто Smth<T>, у которой в единственном поле лежит настоящая структура
ладно, давай как для даунов
источник

EG

Emmanuel Goldstein in rust_offtopic
У нас есть трейт Compare<L, E, R>
источник

EG

Emmanuel Goldstein in rust_offtopic
У него есть ассоциированный тип Output
источник

D

Dima in rust_offtopic
у меня нету трейтов
источник