self.socket.try_recv().ok()
.and_then(|msg| deserialize(&msg).ok())
.and_then(|decoded| match decoded {
Packet::JoinResult { success } => Some(success),
_ => None,
})
.and_then(|success| {
if success {
undefined!()
} else {
undefined!()
}
None
});
Result가 Error일 때는 계속 무시하고 하고 있으니까 그냥 Option으로 바꿔버리면 Error 타입 관계 없이 and_then으로 쭉쭉 연결하면 될 듯한데?
try_recv가 반환하는 Result나 deserialize가 반환하는 Result는 ok로 Option으로 바꾸고
Packet::JoinResult는 할 수 없이 match한 다음 Option으로 바꾸고 ㅇㅇ
클로저는 F#에서는 좋아하는데 Rust에선 영
아 저 undefined된 곳에서 self 또 써야되니 이부분은 밖으로 한번 빼야겠네..
러스트 잘 모르는데 monad 쓰네
ㅇㅇ 여기서 and_then이 하스켈로 치면 (>>=)
저거 undefined!()는 뭐여 unimplemented!() 같은거?
아니 걍 잘못 쓴거 ㅋㅋ 의도는 unimplemented였음 ㅋㅋ