Zum Inhalt springen

Send und Sync

Stellen Sie sich vor, Sie entwerfen eine API für eine Datenbankverbindung wie diese:

struct DbConnection { /* ... */ }
impl DbConnection {
fn query(&self) -> DbResult {
/* ... */
}
}

Ihre Datenbank unterstützt keine gleichzeitigen Abfragen von derselben Verbindung. Welche der folgenden Marker-Traits sollte DbConnection implementieren?

Es ist in Ordnung, eine DbConnection zwischen Threads zu senden, daher sollte DbConnection Send implementieren. Es wäre jedoch nicht gültig, z.B. ein Arc<Database> so zu teilen, dass mehrere Threads gleichzeitig db.query() aufrufen, daher sollte DbConnection Sync nicht implementieren.