Mam HashMap<(String, usize), f64>
. Mam również &str
i usize
, które chciałbym sprawdzić w tym HashMap
bez klonowania. Czy istnieje sposób, aby w jakiś sposób odszukać (&str, usize)
jako?Wyszukaj klucz w HashMap <(String, usize), f64> w Rust
5
A
Odpowiedz
5
Nie, nie możesz. Opcje dla patrząc w HashMap<K,V>
są:
- Sposób
entry
, który wymagaK
przez wartość, która w danym przypadku jest(String, usize)
- tak trzeba by skonstruowaćString
. - Różne
get
,contains_key
itp wszystko zrobić „pożyczył” formęK
(dokumentacja mówi&Q
, gdzieK: Borrow<Q>
;. To oznacza albo&(String, usize)
lub coś, co może produkowanego jedną
Technicznie można iteracyjne przez to i robić własne porównania, ale to prawdopodobnie nie jest to, co chcesz!
4
Istnieje jednak metoda, która nie wymaga przydzielania ciągu znaków, ale musisz zmienić swoją mapę, aby klucz jest typu (std::borrow::Cow<'a, str>, usize)
(dla pewnego życia 'a
). Następnie możesz sprawdzić wartości za pomocą map.get((Cow::Borrowed(my_str_slice), 0))
.
Powiązane problemy
- 1. HashMap <String, Integer> Wyszukaj część klucza?
- 2. Wyszukaj HashMap w ArrayList of HashMap
- 3. ArrayList <HashMap <String, String >> do String []
- 4. Get ArrayList <HashMap <String, String >> ceni
- 5. ArrayList jako klucz w Hashmap
- 6. Nie można rzutować HashMap <String, String> na interfejs rozszerzający mapę <String, String>
- 7. HashMap <String, boolean> skopiuj wszystkie klucze do HashMap <String, Integer> i zainicjuj wartości do zera
- 8. Konwertuj Vec <String> na plasterka & str w Rust?
- 9. Dodawanie do linkedList w HashMap <String, LinkedList>
- 10. Aktualizacja Java HashMap klucz
- 11. Jak iterować listę znaków <HashMap <String, String >>?
- 12. Pasek wyszukiwania - wyszukaj klucz "enter"
- 13. Jak przekonwertować wszystkie właściwości systemu Java na HashMap <String, String>?
- 14. sortowanie java HashMap <String, Integer>. Jak to posortować?
- 15. HashMap w HashMap
- 16. Merge Map <String, List <String> Java 8 Stream
- 17. Pożyczyć Rust z HashMap trwa poza zakres jest w?
- 18. HashMap i int jako klucz
- 19. Zdobądź klucz HashMap w Androidzie przez położenie lub indeksu
- 20. Zrozumienie HashMap <K,V>
- 21. Uzyskaj klucz z HashMap, używając wartości
- 22. Sprawdź, czy obiekt jest instancją String, HashMap lub HashMap []
- 23. UDP API w Rust
- 24. Znalezienie string-klucz w JavaScript tablicy
- 25. PHP - Split String w par klucz/wartość
- 26. Przywracanie funkcji String z Rust do Python
- 27. Golangopodobny odroczenie w Rust
- 28. Interakcja Rust z C++ std :: string
- 29. Listę <String> do ArrayList <String> problem z konwersją
- 30. Pierwsze pierwsze rzeczy w HashMap?
Jeśli to możliwe, musisz użyć 'Krowy', zobacz http://stackoverflow.com/questions/36480845/how-to-avoid-temporary-allocations-when-using-complex-key- for-hashmap – tafia
Dowolny powód nie chcesz używać 'HashMap <(& str, usize), f64>'? Być może nie rozumiem rdzy wystarczająco dobrze, ale wydaje mi się to rozsądnym rozwiązaniem. – user25064
@ user25064 coś musi posiadać alokację 'String', a być może klucz mapy jest najbardziej naturalny. Podział tych dwóch na części jest potencjalnym rozwiązaniem, w zależności od użycia. – Shepmaster