Я работаю над проектом, который может использовать либо TcpStream
s, либо SslStream
s, в зависимости от того, что пользователь настроил. У меня есть несколько простых методов, таких как send_cmd(stream)
и recv_msg(stream)
, который работает с этими потоками.Обработка TcpStream или SslStream idiomatically
Было бы более идиоматично создавать перечисление, которое может быть либо TcpStream
, либо SslStream
и передать это этим методам? Или было бы лучше сделать что-то с чертами, например, чтобы аргумент потока этим методам реализовывал черты Read
и Write
?
Моя мысль заключается в том, что решение перечислимого типа было бы лучше, поскольку оно явно говорит о том, какие данные мы планируем обрабатывать, вместо того чтобы разрешать все, что реализует Read
или Write
, например файлы. Однако, с другой стороны, перед использованием потока для всех этих методов потребуется совпадение. Мысли?
Это похоже на http://stackoverflow.com/q/37223741/5189607. – malbarbo
Какую пользу получает ваш код (или пользователей вашего кода), ограничивая только два конкретных типа? – Shepmaster
@Shepmaster: это реализация API для службы, доступной только через tcp. – vimalloc