p
fn test<T>(x: A) -> A | T { ... }
Как матчить
test::<A>(...)
?Size: a a a
p
fn test<T>(x: A) -> A | T { ... }
test::<A>(...)
?p
p
G
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
G
В
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
enum HelloWorld {
0(Hello),
1(World),
}
Hello
, World
— существующие типыAZ
let foo: 1 | 2 = 1
?p
В
enum
использовать?G
AZ
enum
использовать?AZ
p
G
AZ
G
p
G