Warum verbieten, den gleichen Wert in einem Format zu verwenden! Makro

8

Gegeben:

%Vor%

Ich bekomme:

%Vor%

Ich bin gezwungen zu tun:

%Vor%

Warum ist mir eine solche Grenze auferlegt?

    
Tshepang 13.01.2015, 19:02
quelle

2 Antworten

3

Es liegt an einer Einschränkung des Formatierungssystems.

Intern fügt println! (genauer gesagt, format_args! ) seine Argumente ein Ein Array, bei dem jedes Argument mit seinem Formatierungstyp verknüpft wird. Zum Beispiel der folgende Ausdruck:

%Vor%

erzeugt dieses Argumentarray:

%Vor%

(Übrigens können Sie die vollständige Erweiterung mit rustc -Z unstable-options --pretty=expanded main.rs sehen)

Dies erklärt, warum Ihr Beispiel nicht funktioniert: Wenn Sie möchten, dass das erste Argument ( __arg0 ) beide String und Show ist, wo würden Sie den zweiten Typ eingeben ?

Es gibt keine Möglichkeit, diese Beschränkung aufzuheben, ohne das System zu sehr zu verkomplizieren, so dass wir es leider nur umgehen müssen.

    
Lambda Fairy 21.01.2015 23:12
quelle
-1

Es verbietet Ihnen nicht, denselben Wert erneut zu verwenden:

%Vor%

funktioniert gut.

Das Problem ist, was die Fehlermeldung sagt:

%Vor%

Sie versuchen, dasselbe Argument wie zwei verschiedene Typen zu verwenden, und das ist nicht cool. Ich bin nicht 100% sicher, warum es nicht ist, aber es ist nicht.

    
Steve Klabnik 14.01.2015 01:50
quelle

Tags und Links