diff --git a/AnyReadable.zig b/AnyReadable.zig index 5d134427d13e8f0a74c6ca67b98c848f981704c5..49de880d0118f9bafff4f82e118d668ccdf6f03f 100644 --- a/AnyReadable.zig +++ b/AnyReadable.zig @@ -16,3 +16,16 @@ pub fn read(r: *AnyReadable, buffer: []u8) !usize { pub fn anyReadable(r: AnyReadable) AnyReadable { return r; } + +pub fn fromStd(reader_ptr: anytype) AnyReadable { + const S = struct { + fn _read(s: *allowzero anyopaque, buffer: []u8) !usize { + const r: @TypeOf(reader_ptr) = @ptrCast(@alignCast(s)); + return r.read(buffer); + } + }; + return .{ + .vtable = &.{ .read = &S._read }, + .state = @constCast(@ptrCast(reader_ptr)), + }; +}