v2 / vlib / v / fmt / tests / generic_structs_keep.vv
45 lines · 39 sloc · 535 bytes · ef5be22f81005b2237311a79b6383138084b0c53
Raw
1struct Foo[T] {
2pub:
3 data T
4}
5
6fn (f Foo[int]) value() string {
7 return f.data.str()
8}
9
10type DB = string
11
12struct Repo[T, U] {
13 db DB
14pub mut:
15 model T
16 permission U
17}
18
19struct User {
20mut:
21 name string
22}
23
24struct Permission {
25pub mut:
26 name string
27}
28
29fn main() {
30 foo_int := Foo[int]{2}
31 assert foo_int.value() == '2'
32 println(foo_int)
33 //
34 x := Repo[int, f64]{'abc', 3, 1.5}
35 println(x.db)
36 println(x.model)
37 println(x.permission)
38 //
39 mut a := Repo[User, Permission]{
40 model: User{
41 name: 'joe'
42 }
43 }
44 println(a.model.name)
45}
46