trait Proto(Stringable, CollectionElement):
fn print(self) -> None: ...
struct Name[DataSize: Int](Proto):
var name: String
fn __init__(inout self, owned name: String) -> None:
self.name = name^
fn __moveinit__(inout self, owned existing: Self) -> None:
self.name = existing.name^
fn __copyinit__(inout self, other: Self) -> None:
self.name = other.name
fn __str__(self) -> String:
var result: String = ""
for i in range(DataSize):
result += self.name[i]
return result
fn print(self) -> None:
print(self)
trait Proto(Stringable, CollectionElement):
fn print(self) -> None: ...
struct Name[DataSize: Int](Proto):
var name: String
fn __init__(inout self, owned name: String) -> None:
self.name = name^
fn __moveinit__(inout self, owned existing: Self) -> None:
self.name = existing.name^
fn __copyinit__(inout self, other: Self) -> None:
self.name = other.name
fn __str__(self) -> String:
var result: String = ""
for i in range(DataSize):
result += self.name[i]
return result
fn print(self) -> None:
print(self)