dyn, но там нельзя 2 трейта
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=904712611ae188e6254b117cf8d8bc8b
как-то так, если очень хочется https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=36f32d876cc95cb7414607ba4d78fcbe
Спасибо, пойдет
fun fact: Go решает ту же проблему, объявляя этот интерфейс в стдлибе https://pkg.go.dev/io#ReadSeeker там ещё и Close вынесено в интерфейс https://pkg.go.dev/io#ReadSeekCloser но способа задать ReadWriteSeekCloser в стдлибе всё равно нет
там это проще interface ReadWriteSeekCloser { ReadSeekCloser Write(p []byte) (n int, err error) }
даже проще interface ReadWriteSeekCloser { Reader Writer Seeker Closer }
но в целом это для этого кейса одно и то же с растовым подходом, только impl писать не надо
а наследование интерфейсов такое же
В расте не получится собрать трейт из имеющихся рандомных методов
да, но это бисайдс зе поинт
Обсуждают сегодня