v2 / vlib / v / tests / generics / generic_method_lambda_arg_test.v
34 lines · 27 sloc · 444 bytes · 24eac4d74d43a4c14048ac2146979b3879b4594c
Raw
1module main
2
3fn test_main() {
4 my := MyError{
5 path: 'err msg'
6 }
7 p := my.to[string](|m| m.path)
8 p2 := my.to_str(|m| m.path)
9 println(p)
10 println(p2)
11
12 assert p == p2
13}
14
15struct MyError {
16pub:
17 path string
18}
19
20fn (e &MyError) msg() string {
21 return e.path
22}
23
24fn (e &MyError) code() int {
25 return 1
26}
27
28fn (e &MyError) to[T](func fn (MyError) T) T {
29 return func(e)
30}
31
32fn (e &MyError) to_str(func fn (MyError) string) string {
33 return func(e)
34}
35