2014-06-18 1 views
1

현재 녹의 std::collections::HashMap 키의 종류에 "해당"몇 가지 유형을 사용하여지도를 조회 할 수 있도록 세 가지 방법, find_equiv, contains_key_equivpop_equiv를 포함하여 업데이트 할 수 없습니다. 예를 들어 키가 String이고 &strString과 "동등한"지도에서 &str 키 값을 찾을 수 있습니다.의 HashMap * _equiv 방법 - 해당 키

그러나 "equivalent"키를 사용하여지도를 업데이트 할 수있는 방법이 없습니다. 예를 들어, 포함 된 값에 대한 변경 가능한 참조를 반환하는 get_mut()과 같은 메서드가 없습니다.

아직 불가능한 이유가 있습니까? 아니면 아직 누락 된 부분이 있습니까?

+0

'get_mut' 실제로 존재합니다 http://static.rust-lang.org/doc/master/std/collections/hashmap/struct.HashMap.html –

+0

@ A.B. 당신은 그가 말했던 것을 잘못 해석하고 있습니다. 동일한 키들에 대해서'get_mut'와 같은 메소드가 없습니다. –

+0

'find_equiv'의 존재를 감안할 때'find_mut_equiv'가 존재할 이유가 없습니다. –

답변

0

주된 이유는 아무도 구현하지 못했다는 것입니다. 그러나 전체 Equiv/_equiv 상황은 해킹으로 간주되며 사람들은 _equiv 방법을 사용하는 HashMap 인터페이스의 절반을 복제하는 데 열중하지 않습니다. 앞으로 우리는 좋은 해결책을 갖게 될 것이라고 확신하지만, 현재로서는 그렇지 않습니다.

+0

해쉬 값을 생성하고 그 내부 객체를'Key'와 비교할 수 있도록 (단지'Key' 대신에) 객체 세트로부터 인스턴스화 될 수있는 해더/콤퍼레이터를 지정할 수 있습니까? 오버로드가 없으면 인스턴스화 부분이 까다로울 수 있습니다. –

+0

@MatthieuM. 무슨 뜻인지 모르겠다. ('Equiv'는 본질적으로 다른 타입에 대한 일반화 된'Eq'이지만, 동일한 해쉬를 가진 두 개의 객체 또한'.equiv'alal입니다.) – huon