| ... | @@ -16,3 +16,16 @@ pub fn read(r: *AnyReadable, buffer: []u8) !usize { | ... | @@ -16,3 +16,16 @@ pub fn read(r: *AnyReadable, buffer: []u8) !usize { |
| 16 | pub fn anyReadable(r: AnyReadable) AnyReadable { | 16 | pub fn anyReadable(r: AnyReadable) AnyReadable { |
| 17 | return r; | 17 | return r; |
| 18 | } | 18 | } |
| | 19 | |
| | 20 | pub fn fromStd(reader_ptr: anytype) AnyReadable { |
| | 21 | const S = struct { |
| | 22 | fn _read(s: *allowzero anyopaque, buffer: []u8) !usize { |
| | 23 | const r: @TypeOf(reader_ptr) = @ptrCast(@alignCast(s)); |
| | 24 | return r.read(buffer); |
| | 25 | } |
| | 26 | }; |
| | 27 | return .{ |
| | 28 | .vtable = &.{ .read = &S._read }, |
| | 29 | .state = @constCast(@ptrCast(reader_ptr)), |
| | 30 | }; |
| | 31 | } |