Zig 0.17.0-dev (Split by item)

This is an example of documentation generated by ZigDoc, an alternative to Zig's built-in Auto Doc feature. See also examples in other modes/formats. The project being documented here (as the example) is the Zig library itself.

memmoveFast

memmove.memmoveFast
fn memmoveFast(dest: ?[*]u8, src: ?[*]u8, len: usize) callconv(.c) ?[*]u8

File

lib/compiler_rt/memmove.zig:41

Code

fn memmoveFast(dest: ?[*]u8, src: ?[*]u8, len: usize) callconv(.c) ?[*]u8 {
    @setRuntimeSafety(compiler_rt.test_safety);
    const small_limit = @max(2 * @sizeOf(Element), @sizeOf(Element));

    if (copySmallLength(small_limit, dest.?, src.?, len)) return dest;

    const dest_address = @intFromPtr(dest);
    const src_address = @intFromPtr(src);

    if (src_address < dest_address) {
        copyBackwards(dest.?, src.?, len);
    } else {
        copyForwards(dest.?, src.?, len);
    }

    return dest;
}