diff --git a/rustler/src/types/binary.rs b/rustler/src/types/binary.rs index de6b35a5..f95ee34c 100644 --- a/rustler/src/types/binary.rs +++ b/rustler/src/types/binary.rs @@ -501,6 +501,14 @@ impl<'a> NewBinary<'a> { pub fn as_mut_slice(&mut self) -> &mut [u8] { unsafe { ::std::slice::from_raw_parts_mut(self.buf, self.size) } } + + pub fn from_iter(env: Env<'a>, iter: impl ExactSizeIterator) -> Self { + let mut bin = Self::new(env, iter.len()); + for (src, dst) in ::std::iter::zip(iter, bin.iter_mut()) { + *dst = src; + } + bin + } } impl<'a> From> for Binary<'a> {