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 standard library.
std › hash_map › HashMapUnmanaged › cloneContext Public Function cloneContext Doc Source Public Function std.hash_map.HashMapUnmanaged.cloneContext
pub fn cloneContext (self : Self , allocator : Allocator , new_ctx : anytype ) Allocator .Error !HashMapUnmanaged (K , V , @TypeOf (new_ctx ), max_load_percentage ) Params File hash_map.zig: 1305
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328 pub fn cloneContext (self : Self , allocator : Allocator , new_ctx : anytype ) Allocator .Error !HashMapUnmanaged (K , V , @TypeOf (new_ctx ), max_load_percentage ) {
var other : HashMapUnmanaged (K , V , @TypeOf (new_ctx ), max_load_percentage ) = .empty ;
if (self .size == 0 )
return other ;
const new_cap = capacityForSize (self .size );
try other .allocate (allocator , new_cap );
other .initMetadatas ();
other .available = @truncate ((new_cap * max_load_percentage ) / 100 );
var i : Size = 0 ;
var metadata = self .metadata .?;
const keys_ptr = self .keys ();
const values_ptr = self .values ();
while (i < self .capacity ()) : (i += 1 ) {
if (metadata [i ].isUsed ()) {
other .putAssumeCapacityNoClobberContext (keys_ptr [i ], values_ptr [i ], new_ctx );
if (other .size == self .size )
break ;
}
}
return other ;
}