| 396 | self.strref = namedtuple('StrRef', ['type'])(StrRefType(self.module)) |
| 397 | |
| 398 | def vec(self, type): |
| 399 | vec = self.struct(f"vec::Vec::<{type.orig_rust()}>", module="std", docs=f"An immutable list of {type.orig_rust()} objects") |
| 400 | vec.debug() |
| 401 | vec.clone() |
| 402 | vec.method(usize.type, "len", [], pyname="__len__", docs="The length of the vector.") |
| 403 | # TODO impl option and use .get() instead |
| 404 | vec.method(type.ref(), "index", [Var(usize.type, "index")], pyname="__getitem__", docs="Copy an element out of the vector.") |
| 405 | vec.pyextra(s('''\ |
| 406 | def __iter__(self): |
| 407 | l = len(self) |
| 408 | for i in range(l): |
| 409 | yield self[i] |
| 410 | ''')) |
| 411 | return vec |
| 412 | |
| 413 | def add(self, elem): |
| 414 | return self |