diff options
| author | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-19 12:53:47 +0000 |
|---|---|---|
| committer | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-19 12:53:47 +0000 |
| commit | 639c6ac65a1bd44b2ba0725fe7016a4920bf0950 (patch) | |
| tree | 47703f960633d3d4580022583134c28b96d5f36e /std/vec.zc | |
| parent | 526b7748cafcb5a00f8e30df88661f6059d79843 (diff) | |
Iterables and iterators :D
Diffstat (limited to 'std/vec.zc')
| -rw-r--r-- | std/vec.zc | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -1,5 +1,6 @@ import "./core.zc" +import "./iter.zc" struct Vec<T> { data: T*; @@ -7,10 +8,35 @@ struct Vec<T> { cap: usize; } +struct VecIter<T> { + data: T*; + count: usize; + idx: usize; +} + +impl VecIter<T> { + fn next(self) -> Option<T> { + if (self.idx < self.count) { + var item = self.data[self.idx]; + self.idx = self.idx + 1; + return Option<T>::Some(item); + } + return Option<T>::None(); + } +} + impl Vec<T> { fn new() -> Vec<T> { return Vec<T> { data: 0, len: 0, cap: 0 }; } + + fn iterator(self) -> VecIter<T> { + return VecIter<T> { + data: self.data, + count: self.len, + idx: 0 + }; + } fn push(self, item: T) { if (self.len >= self.cap) { |
