struct List[T] { pub mut: head &ListNode[T] = unsafe { nil } } struct ListNode[T] { pub mut: value T next &ListNode[T] = unsafe { nil } } fn list_new[T]() List[T] { return List[T]{} } fn listnode_new[T]() &ListNode[T] { return &ListNode[T]{0, 0} } fn (mut l List[T]) free() { } fn test_generic_struct_free() { mut list := list_new[string]() println(list) list.free() assert true }