Was bedeutet das Ausrufezeichen in einer Trait-Implementierung?

8

Ich fand in der Bibliothek Referenz für std::rc::Rc diese Zielimplementierung

%Vor%

Was bedeutet das Ausrufezeichen vor Send ?

Ich habe sowohl die The Rust Programmiersprache ¹ Buch und The Rust Reference ², fand aber keine Erklärung. Bitte geben Sie eine Referenz in Ihrer Antwort.

¹ besonders die [section 3.19 Traits
² und Abschnitte 5.1 Traits und 5.1 Implementierungen
nalply 17.05.2015, 19:28
quelle

2 Antworten

9

Es handelt sich um eine negative Eigenschaftenimplementierung für das Merkmal Send , wie in RFC 19 .

Zusammenfassung: Das Merkmal Send ist ein unsicheres Merkmal . Der RFC sagt:

  

[Es] ist nicht sicher zu implementieren, weil die Implementierung semantische Garantien liefert, die, wenn sie kompromittiert werden, die Speichersicherheit auf eine tiefe Art und Weise bedrohen.

Sie sind standardmäßig für alle Typen implementiert:

%Vor%

Beachten Sie .. als Syntax für eine Standardimplementierung. Das Merkmal darf auch keine Methoden definieren. Eine Standardimplementierung ist ein Markermerkmal, das von allen Typen implementiert wird.

Um also Send zu deaktivieren, schreiben Sie eine negative Trait-Implementierung:

%Vor%     
nalply 18.05.2015, 06:05
quelle
6

Dies ist ein negatives Merkmal impl , so dass Sie es als aus dem Send Merkmal herauslesen lesen können.

    
fjh 17.05.2015 19:35
quelle

Tags und Links