X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning-c-bindings%2Fsrc%2Fc_types%2Fmod.rs;h=5db6dda00b908375df6a5b02accae57d2f21a89a;hb=f160848382e6a1bc43dc100d77b96c4b4ecb3beb;hp=8cbfddd469437b725c4dd2e3a04fc58e0f05e566;hpb=7613eb0c40d726769bfc2b43e84421017858c532;p=ldk-c-bindings diff --git a/lightning-c-bindings/src/c_types/mod.rs b/lightning-c-bindings/src/c_types/mod.rs index 8cbfddd..5db6dda 100644 --- a/lightning-c-bindings/src/c_types/mod.rs +++ b/lightning-c-bindings/src/c_types/mod.rs @@ -15,6 +15,8 @@ use bitcoin::bech32; use std::convert::TryInto; // Bindings need at least rustc 1.34 +use std::io::{Cursor, Read}; // TODO: We should use core2 here when we support no_std + /// Integer in the range `0..32` #[derive(PartialEq, Eq, Copy, Clone)] #[allow(non_camel_case_types)] @@ -355,6 +357,18 @@ impl u8slice { if self.datalen == 0 { return &[]; } unsafe { std::slice::from_raw_parts(self.data, self.datalen) } } + pub(crate) fn to_reader<'a>(&'a self) -> Cursor<&'a [u8]> { + let sl = self.to_slice(); + Cursor::new(sl) + } + pub(crate) fn from_vec(v: &derived::CVec_u8Z) -> u8slice { + Self::from_slice(v.as_slice()) + } +} +pub(crate) fn reader_to_vec(r: &mut R) -> derived::CVec_u8Z { + let mut res = Vec::new(); + r.read_to_end(&mut res).unwrap(); + derived::CVec_u8Z::from(res) } #[repr(C)]