2013-02-11 20 views
7

Czy język Rust obsługuje stałe wartości w kodzie generycznym podobne do C++? Wydaje się, że język overview nie anonsuje go. Parametryzowanie typów ze stałymi w C++ pozwala na tworzenie obiektów z wcześniej przydzielonymi buforami o różnej wielkości w zależności od potrzeb klienta (typy takie jak stlsoft :: auto_buffer).
Jeśli nie, jakie są najlepsze praktyki wdrażania podobnych projektów w firmie Rust?Stałe wartości w rdzeniach generycznych

Odpowiedz

8

Nie, nie jest to obsługiwane w bezpieczny sposób. Potrzebowalibyśmy do tego literałów numerycznych na poziomie typu, takich jak ostatnio dodane GHC.

Można jednak użyć makr Rust. Za pomocą makra możesz tworzyć "szablony", które są sparametryzowane przez dowolne wyrażenia, w tym stałe, co pozwoli ci robić to, co chcesz tutaj. Zauważ, że możesz znaleźć błędy i ograniczenia w systemie makr, jeśli spróbujesz tego w tej chwili.

+0

Makra wyglądają jak obcy w porównaniu z podstawowym językiem. Czy jest jeszcze miejsce na wyrażenia w czasie kompilacji, które będą zwykłymi parametrami funkcji w przyrodzie Rusta? – tivadj

+0

Chcę parametryzować typ nad funkcją. Wykonanie tego z makrami wymagałoby odpowiedniej funkcji w większości witryn wywołań. Alternatywnie mogę "przechowywać" funkcję jako "wartość" w wielu różnych miejscach struktury, aby była dostępna. Więc parametryzacja wartości będzie naprawdę dobra! – dhardy

+0

Rozwiązaniem mojego problemu nie jest parametrize nad funkcją, ale nad typem (prawdopodobnie pustą strukturą) implementującą pewną cechę. Teoretycznie przynajmniej; I lub kompilator ma problemy ze złożonością. – dhardy

Powiązane problemy