原文地址: https://www.openmymind.net/Leveraging-Zigs-Allocators/ 假设我们想为Zig编写一个 HTTP服务器库。这个库的核心可能是线程池,用于处理请求。以简化的方式来看,它可能类似于: 1 2 3 4 5 6 7 fn run(worker: *Worker) void { while (queue.pop()) |conn| { const action = worker.route(conn.req.url); action(conn.req, conn.res) catch { // TODO: 500 }; worker.write(conn.res); } } 作为这个库的用户,您可能会编写一些动态内容的...| Zig 语言中文社区
阅读这篇文章的前提是了解 Zig 的范型实现 如大多数哈希映射实现一样,Zig 的 std.HashMap 依赖于两个函数:hash(key: K) u64 和 eql(key_a: K, key_b: K) bool。其中,哈希函数接收一个键并返回一个无符号的64位整数作为哈希码。相同的关键字总是会返回相同的哈希码。然而,为了处理不同的键可能生成相同哈希码的情况(即碰撞),我们还需要 eql 函数来确定两个键是否相等。 这是一些...| Zig 语言中文社区