2013-02-11 1 views
7

Le langage Rust prend-il en charge des valeurs constantes dans un code générique similaire à C++ way? Il semble que la langue overview ne le signale pas. Paramétrer des types avec des constantes en C++ permet de créer des objets avec des tampons pré-alloués de taille différente en fonction des besoins du client (des types comme stlsoft :: auto_buffer).
Si non, alors quelles sont les meilleures pratiques pour mettre en œuvre des conceptions similaires dans Rust?Valeurs constantes dans les génériques Rust

Répondre

8

Non, cela n'est pas pris en charge de manière sécurisée. Nous aurions besoin de littéraux numériques de type type, comme GHC récemment ajouté, pour cela.

Toutefois, vous pouvez utiliser des macros Rust. Avec une macro, vous pouvez créer des «templates» qui sont paramétrés sur des expressions arbitraires, y compris des constantes, ce qui vous permettrait de faire ce que vous voulez ici. Notez que vous pouvez trouver des bogues et des limitations dans le système de macros si vous essayez ceci pour le moment.

+0

Macros ressemble à des étrangers par rapport au langage de base. Y a-t-il une place pour que les expressions de compilation soient les paramètres ordinaires de la fonction dans le futur de Rust? – tivadj

+0

Je souhaite paramétrer un type sur une fonction. Pour ce faire, avec des macros, il faudrait respecter la fonction sur la plupart des sites d'appel. Alternativement, je peux "stocker" la fonction comme une "valeur" dans de nombreux endroits différents dans la structure pour le rendre accessible. Donc la paramétrisation sur les valeurs serait vraiment sympa! – dhardy

+0

La solution à mon problème n'est pas de paramétrer une fonction mais de le faire sur un type (probablement une structure vide) implémentant un certain trait. En théorie au moins; Moi ou le compilateur a des problèmes avec la complexité de celui-ci. – dhardy

Questions connexes