From 65c6bff73b69937a7cb9ade181d5a9423cd1871f Mon Sep 17 00:00:00 2001 From: Peter Abrahamsen Date: Sat, 26 Jan 2019 21:29:42 -0800 Subject: [PATCH 1/2] Derive Debug for Transaction --- src/transaction.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/transaction.rs b/src/transaction.rs index b717cd7..5ef234f 100644 --- a/src/transaction.rs +++ b/src/transaction.rs @@ -11,7 +11,7 @@ pub enum TransactionBehavior { } /// Options for how a Transaction or Savepoint should behave when it is dropped. -#[derive(Copy, Clone, PartialEq, Eq)] +#[derive(Copy, Clone, Debug, PartialEq, Eq)] pub enum DropBehavior { /// Roll back the changes. This is the default. Rollback, @@ -50,6 +50,7 @@ pub enum DropBehavior { /// tx.commit() /// } /// ``` +#[derive(Debug)] pub struct Transaction<'conn> { conn: &'conn Connection, drop_behavior: DropBehavior, From a160f360d00f4bb53c81f0c353d153e4056cd0a1 Mon Sep 17 00:00:00 2001 From: Peter Abrahamsen Date: Tue, 29 Jan 2019 11:01:09 -0800 Subject: [PATCH 2/2] Test that Transaction can be removed from an Rc --- src/transaction.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/transaction.rs b/src/transaction.rs index 5ef234f..4ee1e82 100644 --- a/src/transaction.rs +++ b/src/transaction.rs @@ -556,6 +556,16 @@ mod test { assert_current_sum(8, &db); } + #[test] + fn test_rc() { + use std::rc::Rc; + let mut conn = Connection::open_in_memory().unwrap(); + let rc_txn = Rc::new(conn.transaction().unwrap()); + + // This will compile only if Transaction is Debug + Rc::try_unwrap(rc_txn).unwrap(); + } + fn insert(x: i32, conn: &Connection) { conn.execute("INSERT INTO foo VALUES(?)", &[x]).unwrap(); }