참조 충돌이라는 말은 내가 지어낸거고
가변참조와 불변참조 둘다 만들었다고 컴파일 에러가 나는데
이걸 해결하는 방법이 궁금함
러스트로 DFS 구현해보는데 이미 방문한 노드를 mark에 true로 표시함
코드는 다음과 같은데
연결된 노드 중에 아직 방문하지 않은 노드만 골라서 재귀호출하려고 하니깐
filter의 closure에서 mark가 불변참조로 대여되고
for_each의 closure에서 mark가 가변참조로 대여된다고 컴파일 에러가 남
이렇게 for_each만 쓰고 if문 박는 방법으로 해결은 되는데
filter, for_each 둘다 써서는 어떻게 해서도 안되는 거?
트릭같은게 있는지 궁금해서 질문글 써 봄
p.s. filter_map 같은게 있긴하던데 이거쓰면 Some으로 래핑해야 하는게 몹시 나이꼬와서
안쓰고 싶은데 rust에선 어떻게 짜는게 conventional함?
걍 iter를 for에 넣어
for v in self.adj[u].iter() { 처럼? 주변 환경캡처하는 closure를 만들지 아예 만들지 말란 소리?
for ... .iter() { if ( ) { } }
이거 맞지?
ㅇㅇ for_each 쓰지마셈
for_each 안쓰는게 conventional 한 코드임? 이유가 머임
제약이 많아서 나중에 확장이 안됨 클로저라서 빡침
map filter같은건 Iterator로 다뤄서 의미가 있는건데 for_each는 걍 먹어버리고 끝이니까 메소드를 쓰는 장점이 없음
iterator consumer라서 별로다?
ㅇㅇ max min fold같은 다른 consumer랑 비교해도 for문이랑 비교해서 장점이 없음
그럼 iterator나 collection 반환하는 경우 아니면 map이나 filter 같은거 안쓰고 for문이랑 if 만 쓰는게 좋다는거네
ㅇㅎ 값을 안뱉는 consumer라 쓸모없는거였구나
ㄱㅅㄱㅅ 글삭튀 하겠음
지랄마 시발아 뭘 삭제해
ㅋㅋ 근데 doc에는 내부적으로 chain써서 for_each가 for문보다 빠를 수 있다던데 그냥 안쓰는게 국룰?
쓰고싶으면 쓰셈 다만 클로저는 항상 소유권 지뢰밭임 너도 지금 밟은거고
코드가 짧고 &mut 캡쳐 안하면 깔끔하게 나오는데 괜히 몸비틀며 전부 넣으려고 하면 못생겨짐
쉽게 말하면 함슬람 기능이니 함슬람스럽게 쓸때는 괜찮고 아니면 걍 for문 돌려
ㅇㅇ for문이 깔끔한 듯