Loading openssl/src/stack.rs +15 −9 Original line number Diff line number Diff line Loading @@ -40,15 +40,8 @@ pub trait Stackable: ForeignType { /// An owned stack of `T`. pub struct Stack<T: Stackable>(*mut T::StackType); impl<T: Stackable> Stack<T> { pub fn new() -> Result<Stack<T>, ErrorStack> { unsafe { ffi::init(); let ptr = cvt_p(OPENSSL_sk_new_null())?; Ok(Stack(ptr as *mut _)) } } } unsafe impl<T: Stackable + Send> Send for Stack<T> {} unsafe impl<T: Stackable + Sync> Sync for Stack<T> {} impl<T: Stackable> Drop for Stack<T> { fn drop(&mut self) { Loading @@ -59,6 +52,16 @@ impl<T: Stackable> Drop for Stack<T> { } } impl<T: Stackable> Stack<T> { pub fn new() -> Result<Stack<T>, ErrorStack> { unsafe { ffi::init(); let ptr = cvt_p(OPENSSL_sk_new_null())?; Ok(Stack(ptr as *mut _)) } } } impl<T: Stackable> iter::IntoIterator for Stack<T> { type IntoIter = IntoIter<T>; type Item = T; Loading Loading @@ -164,6 +167,9 @@ impl<T: Stackable> ExactSizeIterator for IntoIter<T> {} pub struct StackRef<T: Stackable>(Opaque, PhantomData<T>); unsafe impl<T: Stackable + Send> Send for StackRef<T> {} unsafe impl<T: Stackable + Sync> Sync for StackRef<T> {} impl<T: Stackable> ForeignTypeRef for StackRef<T> { type CType = T::StackType; } Loading Loading
openssl/src/stack.rs +15 −9 Original line number Diff line number Diff line Loading @@ -40,15 +40,8 @@ pub trait Stackable: ForeignType { /// An owned stack of `T`. pub struct Stack<T: Stackable>(*mut T::StackType); impl<T: Stackable> Stack<T> { pub fn new() -> Result<Stack<T>, ErrorStack> { unsafe { ffi::init(); let ptr = cvt_p(OPENSSL_sk_new_null())?; Ok(Stack(ptr as *mut _)) } } } unsafe impl<T: Stackable + Send> Send for Stack<T> {} unsafe impl<T: Stackable + Sync> Sync for Stack<T> {} impl<T: Stackable> Drop for Stack<T> { fn drop(&mut self) { Loading @@ -59,6 +52,16 @@ impl<T: Stackable> Drop for Stack<T> { } } impl<T: Stackable> Stack<T> { pub fn new() -> Result<Stack<T>, ErrorStack> { unsafe { ffi::init(); let ptr = cvt_p(OPENSSL_sk_new_null())?; Ok(Stack(ptr as *mut _)) } } } impl<T: Stackable> iter::IntoIterator for Stack<T> { type IntoIter = IntoIter<T>; type Item = T; Loading Loading @@ -164,6 +167,9 @@ impl<T: Stackable> ExactSizeIterator for IntoIter<T> {} pub struct StackRef<T: Stackable>(Opaque, PhantomData<T>); unsafe impl<T: Stackable + Send> Send for StackRef<T> {} unsafe impl<T: Stackable + Sync> Sync for StackRef<T> {} impl<T: Stackable> ForeignTypeRef for StackRef<T> { type CType = T::StackType; } Loading