@@ -1839,7 +1839,7 @@ pub fn replaceScalar(comptime T: type, slice: []T, needle: T, replacement: T) vo
1839
1839
}
1840
1840
1841
1841
/// Collapse consecutive duplicate elements into one entry.
1842
- pub fn collapseRepeats (comptime T : type , slice : []T , elem : T ) usize {
1842
+ pub fn collapseRepeatsLen (comptime T : type , slice : []T , elem : T ) usize {
1843
1843
if (slice .len == 0 ) return 0 ;
1844
1844
var write_idx : usize = 1 ;
1845
1845
var read_idx : usize = 1 ;
@@ -1852,11 +1852,15 @@ pub fn collapseRepeats(comptime T: type, slice: []T, elem: T) usize {
1852
1852
return write_idx ;
1853
1853
}
1854
1854
1855
+ /// Collapse consecutive duplicate elements into one entry.
1856
+ pub fn collapseRepeats (comptime T : type , slice : []T , elem : T ) []T {
1857
+ return slice [0 .. collapseRepeatsLen (T , slice , elem )];
1858
+ }
1859
+
1855
1860
fn testCollapseRepeats (str : []const u8 , elem : u8 , expected : []const u8 ) ! void {
1856
1861
const mutable = try std .testing .allocator .dupe (u8 , str );
1857
1862
defer std .testing .allocator .free (mutable );
1858
- const actual = mutable [0.. collapseRepeats (u8 , mutable , elem )];
1859
- testing .expect (std .mem .eql (u8 , actual , expected ));
1863
+ testing .expect (std .mem .eql (u8 , collapseRepeats (u8 , mutable , elem ), expected ));
1860
1864
}
1861
1865
test "collapseRepeats" {
1862
1866
try testCollapseRepeats ("" , '/' , "" );
0 commit comments