Ich benutze Dylib als Plugin-Lösung. Wenn ich die Funktion register
aufruft (im folgenden Code ist fun
mein Projektname):
In der Funktion register
von dylib mem.get_mut::<fun::router::Router>("router")
return None
Aber wenn ich mem.get_mut::<fun::router::Router>("router")
in main.rs
verwende. Es gibt Router
zurück, wie ich will.
Ich teste mehr und erhalte ein Ergebnis:
In dylib:
mem.get_mut::<String>("test")
funktioniert gut. mem.get_mut::<fun::Bob>("bob")
return None
. In main.rs
:
mem.get_mut::<String>("test")
funktioniert gut. mem.get_mut::<fun::Bob>("bob")
funktioniert gut. Meine Frage:
Warum downcast_mut gibt keine in dylib zurück, wenn der generische Typ von downcast im Hauptmodul definiert ist?
mem struct:
%Vor%get_mut:
%Vor%Entschuldigung für meine schlechte Beschreibung.
Aktualisierung:
TypeId Testergebnis:
%Vor%TypeId ist anders. Irgendeine Lösung für dieses Problem?
Wie bereits erwähnt, ist der TypeId
bis jetzt (1.10) nicht stabil über Kisten oder Kompilationen.
@eddyb hat gerade diese Woche eine Pull-Anfrage gelandet, die TypeId
einzigartig macht aktiviert Ihren speziellen Anwendungsfall.
Es ist wichtig zu beachten, dass diese Stabilität nicht vollständig ist; Wenn Sie zum Beispiel die Kommentare lesen, werden Sie feststellen, dass sich die TypeId
ändern kann, wenn sich die Compiler-Version oder die Crate-Version ändert. Für einen einzelnen Compiler und eine gemeinsam genutzte Abhängigkeit ist es jedoch bei Neukompilierungen stabil.
Für jetzt können Sie entweder einen nächtlichen Compiler verwenden oder bis zur nächsten stabilen Version warten, die diesen Patch enthält (1.12 oder 1.13, nehme ich an).
Tags und Links rust