Size: a a a

2020 May 03

EG

Emmanuel Goldstein in rust_offtopic
Выбрать из "foo" | "bar" тоже можно
источник

EG

Emmanuel Goldstein in rust_offtopic
А вот выбрать из 42..∞ нельзя
источник

p

polunin.ai in rust_offtopic
Emmanuel Goldstein
На самом деле, скорее, T: Finite
ну это для чисел подходит. А для произвольного диапазона нужно какой-то T: List
источник

EG

Emmanuel Goldstein in rust_offtopic
Типа
trait Finite {
   fn size() -> Int;
   fn get(n: 0..Self::size()) -> Self;
}
источник

p

polunin.ai in rust_offtopic
а, ну так тоже
источник

EG

Emmanuel Goldstein in rust_offtopic
polunin.ai
ну это для чисел подходит. А для произвольного диапазона нужно какой-то T: List
Нет, зачем? Вот эта сигнатура трейта подойдёт для любого типа с конечным количеством значений
источник

e

egoarka in rust_offtopic
Emmanuel Goldstein
Типа
trait Finite {
   fn size() -> Int;
   fn get(n: 0..Self::size()) -> Self;
}
нормуль
источник

p

polunin.ai in rust_offtopic
наверное
trait Finite {
   type Item;
   fn size() -> Int;
   fn get(n: 0..Self::size()) -> Self::Item;
}
источник

EG

Emmanuel Goldstein in rust_offtopic
polunin.ai
наверное
trait Finite {
   type Item;
   fn size() -> Int;
   fn get(n: 0..Self::size()) -> Self::Item;
}
Нет же
источник

EG

Emmanuel Goldstein in rust_offtopic
get() получает энный объект этого типа.
источник

EG

Emmanuel Goldstein in rust_offtopic
Например, для bool
impl Finite for Bool {
   fn size() -> Int { 2 }
   fn get(n: 0..2) -> Self {
       if n == 0 { false } else { true }
   }
}
источник

EG

Emmanuel Goldstein in rust_offtopic
Тогда реализация функции random_choice получается примерно такая:
n = get_random_number(0, T::size());
T::get(n)
источник

EG

Emmanuel Goldstein in rust_offtopic
Finite подразумевает, что у типа есть конечное количество пронумерованных значений
источник

EG

Emmanuel Goldstein in rust_offtopic
Можно ещё сделать более слабый трейт Countable для счётных типов, но я ХЗ зачем
trait Countable {
   fn get(n: Int) -> Self;
}
источник

e

egoarka in rust_offtopic
Emmanuel Goldstein
λ => fmap (\a -> (show a) ++ "bar") [1..10]
["1bar","2bar","3bar","4bar","5bar","6bar","7bar","8bar","9bar","10bar"]
удобно так то
не implicit но тоже норм
источник

e

egoarka in rust_offtopic
polunin.ai
мне нравится как в расте - debug и display
debug: Debug t -> String
такое себе и тем более это через макросы
источник

EG

Emmanuel Goldstein in rust_offtopic
egoarka
такое себе и тем более это через макросы
Для этого не нужны макросы
источник

EG

Emmanuel Goldstein in rust_offtopic
Ты можешь сам реализовать дебаг
источник

e

egoarka in rust_offtopic
Emmanuel Goldstein
Для этого не нужны макросы
ну да, не нужны, я просто вспомнил как у раста это

format! к примеру и тп + derive debug и тп
источник

EG

Emmanuel Goldstein in rust_offtopic
egoarka
ну да, не нужны, я просто вспомнил как у раста это

format! к примеру и тп + derive debug и тп
format!() это костыль для красивого синтаксиса
источник