import core::c; unsafe foreign fill(target: c::Buffer, byte: i32, count: u64) -> c_ptr = c("libc.so.6", "memset", output(target, count)); fn start_main() -> i64 { var source: list = [0, 255, 65]; let created = c::buffer(source); if not created::ok { print(created::error::code); return 1; } let owned = created::value; let alias = owned; source[0] = 7; let copied = c::bytes(owned, u64(3)); if not copied::ok { return 2; } unsafe fill(owned, i32(32), u64(3)); let changed = c::bytes(alias, u64(3))::value; if copied::value[0] not matches 0 or copied::value[1] not matches 255 or copied::value[2] not matches 65 { return 3; } if changed[0] not matches 32 or changed[1] not matches 32 or changed[2] not matches 32 { return 4; } let oversized = c::bytes(owned, u64(4)); if oversized::ok or oversized::error::code not matches "foreign.invalid_argument" { return 5; } if not c::close(owned)::ok { return 6; } let closed = c::capacity(alias); if closed::ok or closed::error::code not matches "foreign.closed" { return 7; } if not c::close(alias)::ok { return 8; } return 0; }