const std = @import("std"); const Writer = std.Io.Writer; pub const Console = struct { setup: *const fn (*const @This()) void, write: *const fn (*const @This(), []const u8) void, }; fn nop_setup(_: *const Console) void {} fn nop_write(_: *const Console, _: []const u8) void {} const nop_console = Console{ .setup = nop_setup, .write = nop_write, }; var cur: *const Console = &nop_console; fn drain( _: *Writer, data: []const []const u8, _: usize, ) Writer.Error!usize { cur.write(cur, data[0]); return data[0].len; } var writer: Writer = .{ .vtable = &.{ .drain = drain }, .buffer = &.{}, }; pub fn print(comptime fmt: []const u8, args: anytype) void { writer.print(fmt, args) catch {}; } pub fn set_console(console: *const Console) void { console.setup(console); cur = console; }