From 87e4f3cb8b4d75278d39f7be43bf8a02b948ab8d Mon Sep 17 00:00:00 2001 From: Thijs Cadier Date: Wed, 23 Sep 2015 23:26:35 +0200 Subject: [PATCH] Fix lifetime issue in options --- src/collection.rs | 12 ++++++++---- src/database.rs | 11 ++++++++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/collection.rs b/src/collection.rs index 6046bdb..81e837d 100644 --- a/src/collection.rs +++ b/src/collection.rs @@ -241,6 +241,10 @@ impl<'a> Collection<'a> { let default_options = CountOptions::default(); let options = options.unwrap_or(&default_options); + let opts_bsonc = match options.opts { + Some(ref o) => Some(try!(Bsonc::from_document(o))), + None => None + }; let mut error = BsoncError::empty(); let count = unsafe { @@ -250,13 +254,13 @@ impl<'a> Collection<'a> { try!(Bsonc::from_document(query)).inner(), options.skip as i64, options.limit as i64, - match options.opts { - Some(ref o) => try!(Bsonc::from_document(o)).inner(), - None => ptr::null() + match opts_bsonc { + Some(ref o) => o.inner(), + None => ptr::null() }, match options.read_prefs { Some(ref prefs) => prefs.inner(), - None => ptr::null() + None => ptr::null() }, error.mut_inner() ) diff --git a/src/database.rs b/src/database.rs index 614e593..509bd2d 100644 --- a/src/database.rs +++ b/src/database.rs @@ -127,13 +127,18 @@ impl<'a> Database<'a> { let mut error = BsoncError::empty(); let name_cstring = CString::new(name).unwrap(); + let options_bsonc = match options { + Some(o) => Some(try!(Bsonc::from_document(o))), + None => None + }; + let coll = unsafe { bindings::mongoc_database_create_collection( self.inner, name_cstring.as_ptr(), - match options { - Some(o) => try!(Bsonc::from_document(o)).inner(), - None => ptr::null() + match options_bsonc { + Some(ref o) => o.inner(), + None => ptr::null() }, error.mut_inner() )