struct Set[T] { pub mut: arr []T } fn (mut s Set[T]) add(elem T) bool { return match s.has(elem) { true { false } else { s.arr << elem true } } } fn (s Set[T]) has(elem T) bool { return elem in s.arr } fn test_generics_struct_with_array() { mut s1 := Set[int]{} println('declared a int-Set ${s1}') s1.add(1) println('the int-Set ${s1}') assert s1.arr == [1] mut s2 := Set[bool]{} println('declared a bool-Set ${s2}') s2.add(true) println('the bool-Set ${s2}') assert s2.arr == [true] mut s3 := Set[f64]{} println('declared a float-Set ${s3}') s3.add(2.22) println('the float-Set ${s3}') assert s3.arr == [2.22] mut s4 := Set[string]{} println('declared a string-Set ${s4}') s4.add('smth') println('the string-Set ${s4} ') assert s4.arr == ['smth'] }