Size: a a a

2020 February 02

p

polunin.ai in rust_offtopic
Вафель
Нет.

fn test<T>(x: A) -> A | T { ... }

Как матчить test::<A>(...)?
Ну это уже какие-то hight-order суммы
источник

p

polunin.ai in rust_offtopic
Такого не надо
источник

p

polunin.ai in rust_offtopic
Просто обычные типы
источник

G

Gymmasssorla in rust_offtopic
Вафель
Можешь пояснить? Я пока не понял
Смотри

let foo: Hello | World = Hello;

match foo {
   0 => println!("Bla"),
   1 => println!("Alb"),
}


Здесь Hello и World - не типы, а просто идентификаторы. Это будет как такое:

enum HelloWorld {
   Hello,
   World,
}


Если вместо foo подставить число, то код не поломается, хотя это желательно. Если .0 и .1, то не поломается. Можно вместо 0 и 1 матчиться по Hello и World, как @Psilon предлагал.
источник

G

Gymmasssorla in rust_offtopic
polunin.ai
Такого не надо
???
источник

G

Gymmasssorla in rust_offtopic
Почему бы не обобщить
источник

В

Вафель in rust_offtopic
Gymmasssorla
Смотри

let foo: Hello | World = Hello;

match foo {
   0 => println!("Bla"),
   1 => println!("Alb"),
}


Здесь Hello и World - не типы, а просто идентификаторы. Это будет как такое:

enum HelloWorld {
   Hello,
   World,
}


Если вместо foo подставить число, то код не поломается, хотя это желательно. Если .0 и .1, то не поломается. Можно вместо 0 и 1 матчиться по Hello и World, как @Psilon предлагал.
Неа, это будет

enum HelloWorld {
   0(Hello),
   1(World),
}


Hello, World — существующие типы
источник

AZ

Alex Zhukovsky in rust_offtopic
Вафель
Неа, это будет

enum HelloWorld {
   0(Hello),
   1(World),
}


Hello, World — существующие типы
как мне сделать тип "один или два"?
источник

AZ

Alex Zhukovsky in rust_offtopic
let foo: 1 | 2 = 1 ?
источник

p

polunin.ai in rust_offtopic
fn foo<T>(x: A) -> T | A {}
Не надо
fn foo<T>(x: A) -> A | B {}
Надо
источник

В

Вафель in rust_offtopic
Alex Zhukovsky
как мне сделать тип "один или два"?
enum использовать?
источник

G

Gymmasssorla in rust_offtopic
polunin.ai
fn foo<T>(x: A) -> T | A {}
Не надо
fn foo<T>(x: A) -> A | B {}
Надо
Почему?
источник

AZ

Alex Zhukovsky in rust_offtopic
Вафель
enum использовать?
так весь смысл этой затеи в том чтобы тебе не надо было энум делать
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
fn foo<T>(x: A) -> T | A {}
Не надо
fn foo<T>(x: A) -> A | B {}
Надо
ты костыль предлагаешь. Фичи должны друг с другом жить, а "тут играем тут нет" оставь плюсам
источник

p

polunin.ai in rust_offtopic
Gymmasssorla
Почему?
При добавлении нового типа который реализует T, старые матчи ломаются
источник

G

Gymmasssorla in rust_offtopic
polunin.ai
При добавлении нового типа который реализует T, старые матчи ломаются
Почему?
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
При добавлении нового типа который реализует T, старые матчи ломаются
вопрос только в именовании варианта, ничего ломаться не будет
источник

G

Gymmasssorla in rust_offtopic
Alex Zhukovsky
вопрос только в именовании варианта, ничего ломаться не будет
+
источник

p

polunin.ai in rust_offtopic
Gymmasssorla
Почему?
Потому что появляется новый вариант
источник

G

Gymmasssorla in rust_offtopic
polunin.ai
Потому что появляется новый вариант
Всего 2 варианта
источник