| 1 | struct FooParams[K, V] { |
| 2 | k K |
| 3 | v V |
| 4 | k2 K |
| 5 | } |
| 6 | |
| 7 | struct Foo[K, V] { |
| 8 | k K |
| 9 | mut: |
| 10 | m map[K]V |
| 11 | } |
| 12 | |
| 13 | fn new_foo[K, V](params FooParams[K, V]) Foo[K, V] { |
| 14 | return Foo[K, V]{ |
| 15 | k: params.k2 |
| 16 | m: { |
| 17 | params.k: params.v |
| 18 | } |
| 19 | } |
| 20 | } |
| 21 | |
| 22 | fn (mut p Foo[K, V]) f() { |
| 23 | mut y := p.m.move() |
| 24 | y.clear() |
| 25 | y.reserve(6) |
| 26 | y.delete(p.k) |
| 27 | assert y.keys().len == 0 |
| 28 | assert y.values().len == 0 |
| 29 | assert y.clone().len == 0 |
| 30 | unsafe { y.free() } |
| 31 | } |
| 32 | |
| 33 | fn test_main() { |
| 34 | mut foo := new_foo(FooParams{ k: 'abc', v: 42, k2: 'def' }) |
| 35 | foo.f() |
| 36 | } |
| 37 | |