Buffering many small writes and flushing them in one go
// Buffering many small writes and flushing them in one go.
import std.io.buffered_writer;
import std.text.from_bytes;
import std.text.number;
def main(): int {
let writer: mutable buffered_writer = new_buffered_writer(256);
let i: mutable int = 1;
while (i <= 3) {
let line: vector u8 = bytes_from_text(int_to_text(i));
buffered_write(&mutable writer, &line);
let newline: vector u8 = [10];
buffered_write(&mutable writer, &newline);
i := i + 1;
}
match flush(&mutable writer) with
| result.ok(_) -> { }
| result.err(code) -> { return code; };
return 0;
}// تخزين كتابات صغيرة كثيرة ثم إفراغها دفعة واحدة.
استورد std.io.buffered_writer;
استورد std.text.from_bytes;
استورد std.text.number;
عرف الرئيسية(): عدد {
دع كاتب: متغير كاتب_مخزن = أنشئ_كاتبا_مخزنا(256);
دع ف: متغير عدد = 1;
طالما (ف <= 3) {
دع السطر: متجه ط8 = بايتات_من_نص(عدد_إلى_نص(ف));
اكتب_مخزنا(&متغير كاتب, &السطر);
دع سطر_جديد: متجه ط8 = [10];
اكتب_مخزنا(&متغير كاتب, &سطر_جديد);
ف := ف + 1;
}
طابق أفرغ_الكاتب_المخزن(&متغير كاتب) مع
| نتيجة.نجح(_) -> { }
| نتيجة.خطأ(الرمز) -> { أرجع الرمز; };
أرجع 0;
}
Run it
With the interpreter, without compiling:
./build/sultanc run examples/en/io/buffered_output.snOr compile it to an executable:
./build/sultanc examples/en/io/buffered_output.sn -o build/example && ./build/example