Wiele iteratorów implement the Clone
trait, ale żaden z nich nie jest implement the Copy
trait. Przynajmniej dla prostych iteratorów, takich jak std:slice::Iter
, the Clone
implementation, tak i tak wygląda jak memcpy, więc dlaczego nie jest również zaimplementowane Copy
?Dlaczego iteratory nie są kopiowalne?
6
A
Odpowiedz
8
Od PR #20790:
To również sprawia, że PR iterator nie niejawnie copyable, jak to było źródłem subtelnych błędów w bibliotekach. Nadal możesz użyć
clone()
, aby wyraźnie skopiować iterator.
Powiązane problemy
- 1. Dlaczego argumentami std :: binary_search są iteratory forward?
- 2. Co to są Iteratory SCARY?
- 3. Czy super-SCARY iteratory są legalne?
- 4. Równoległe Iteratory
- 5. Scala - iteratory i takeWhile
- 6. Jak komponować zmienne Iteratory?
- 7. Struts 2 gniazdowania iteratory
- 8. STL Iteratory std :: odległości() Błąd
- 9. Iteratory wydajność konkatenacji
- 10. Iteratory STL: container.end()
- 11. Jak spłaszczyć Iteratory kontenerów zagnieżdżonych?
- 12. Dlaczego właściwości nie są deklarowane w interfejsach
- 13. Dlaczego "modele nie są jeszcze załadowane"?
- 14. Dlaczego nie są przechwytywane wyjątki C++?
- 15. Dlaczego mój termin nie są ujęte
- 16. Dlaczego nie wszystkie typy wartości są zerowe?
- 17. dlaczego konstruktorzy domyślnie nie są jawni?
- 18. Dlaczego moje widoki nie są rysowane?
- 19. dlaczego są puste tablice numpy nie drukowane
- 20. Dlaczego listy różnic nie są instancjami składanymi?
- 21. Dlaczego wartości OrderedDict nie są równe?
- 22. Dlaczego następujące zapytania SQL nie są równoważne?
- 23. Dlaczego nieprzeładowane ustawienia użytkownika nie są załadowane?
- 24. Dlaczego nie są dozwolone statyczne pływaki const?
- 25. Dlaczego te wektory nie są równe?
- 26. Dlaczego te przeciążenia nie są niejednoznaczne?
- 27. Dlaczego przerwania MSI nie są udostępniane?
- 28. Lazy iteratory (generatory) z asyncio
- 29. Iteratory i odniesienie liczone ciągi
- 30. Ogólne Iteratory dostępu do wektorów
Czy możesz podać przykład jednego z tych subtelnych błędów? – Shepmaster
@Shepmaster: Nie mogę wymyślić żadnej. Zakładam, że miało to coś wspólnego z iteratorami przekazywanymi do pętli 'for', modyfikowaniem, ale pozostawienie * oryginalnego * iteratora niezmodyfikowanego. –
Znalazłem [jeden przykład] (https://github.com/rust-lang/rust/pull/27186#issuecomment-123390413), sprawdzając poprawność pamięci. – Shepmaster