Iterator 비동기버전 Stream을 쓰고 있음 근데 얘가 안정화가 안돼서 표준에는 없고 외부 크레잇(tokio_stream)에서 끌어쓰고 있음
어느 구현이든지 Stream 자체에는 다음 원소 poll하는 poll_next()밖에 없고 나머지 유틸 메서드들은 StreamExt에 구현되어 있음
그래서 내 경우 파서를 만들고 있는데 게시물 페이지 로딩을 담당하는 부분을 Stream으로 구현해서 map()이나 filter() 이런 깔쌈한 기능을 쓰려고함
근데 문제는 페이지 로딩을 할 때 원하는 페이지를 지정해서 바로 로딩할 수 있도록 nth()나 skip()을 오버로딩하고 싶은데 그 구현이 Stream이 아니라 StreamExt에 있다는거임
게다가 Iterator에서는 skip()을 구현안해도 nth()만 구현하면 skip()에도 알아서 적용이 되는데 StreamExt에는 skip()만 있고 nth()나 그런 비슷한 메서드가 아예 없음
그래서 skip()을 구현하자니 리턴타입이 Skip<Self>라는 고정된 타입이라 어떻게 할수도 없음... 이럴때는 어떻게 해야되냐
아니 왜 오버로딩 할려는거임 걍 my_skip 만들면 되는데
일단 지금은 그렇게 하고 있는데 뭔가 좀 불만족스럽잖아
근데 나도 비동기 많이 해본건 아니니까 러스트 공식 디코에 물어보면 아는사람 많음
https://rust-kr.org/