Как мне создать свой собственный класс, который можно заменить на IO, например, для перенаправить / захватить ввод / вывод для некоторого кода, который принимает IO-подобный параметр? Похоже, что сам IO связан с файловыми дескрипторами ОС, и единственный известный мне класс, имитирующий его без подклассов, - это StringIO, который, кажется, просто переопределяет весь интерфейс.
Я бы подумал, что язык предоставит простой способ сделать это, но я не могу найти никакой информации по этому вопросу. Есть ли миксин, который реализует интерфейс поверх нескольких примитивов, как это делает Enumerable?