v2 / vlib / v / tests / options / option_ret_ptr_generic_test.v
30 lines · 25 sloc · 518 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1struct Stack[T] {
2mut:
3 elements []T
4}
5
6pub fn (stack Stack[T]) is_empty() bool {
7 return stack.elements.len == 0
8}
9
10pub fn (stack Stack[T]) peek() ?T {
11 return if !stack.is_empty() { stack.elements.last() } else { none }
12}
13
14pub fn (stack Stack[T]) peek2() !T {
15 return if !stack.is_empty() { stack.elements.last() } else { error('Stack is empty') }
16}
17
18@[heap]
19struct Element {
20mut:
21 name string
22 value string
23}
24
25fn test_main() {
26 mut parent := &Element{
27 name: 'parent element'
28 }
29 mut stack := Stack[&Element]{}
30}
31