@@ -1917,7 +1917,7 @@ pub fn replaceScalar(comptime T: type, slice: []T, needle: T, replacement: T) vo
1917
1917
}
1918
1918
1919
1919
/// Collapse consecutive duplicate elements into one entry.
1920
- pub fn collapseRepeats (comptime T : type , slice : []T , elem : T ) usize {
1920
+ pub fn collapseRepeatsLen (comptime T : type , slice : []T , elem : T ) usize {
1921
1921
if (slice .len == 0 ) return 0 ;
1922
1922
var write_idx : usize = 1 ;
1923
1923
var read_idx : usize = 1 ;
@@ -1930,11 +1930,15 @@ pub fn collapseRepeats(comptime T: type, slice: []T, elem: T) usize {
1930
1930
return write_idx ;
1931
1931
}
1932
1932
1933
+ /// Collapse consecutive duplicate elements into one entry.
1934
+ pub fn collapseRepeats (comptime T : type , slice : []T , elem : T ) []T {
1935
+ return slice [0 .. collapseRepeatsLen (T , slice , elem )];
1936
+ }
1937
+
1933
1938
fn testCollapseRepeats (str : []const u8 , elem : u8 , expected : []const u8 ) ! void {
1934
1939
const mutable = try std .testing .allocator .dupe (u8 , str );
1935
1940
defer std .testing .allocator .free (mutable );
1936
- const actual = mutable [0.. collapseRepeats (u8 , mutable , elem )];
1937
- testing .expect (std .mem .eql (u8 , actual , expected ));
1941
+ testing .expect (std .mem .eql (u8 , collapseRepeats (u8 , mutable , elem ), expected ));
1938
1942
}
1939
1943
test "collapseRepeats" {
1940
1944
try testCollapseRepeats ("" , '/' , "" );
0 commit comments