extern crate syncpool; use std::vec; use syncpool::prelude::*; struct BigStruct { a: u32, b: u32, c: Vec, } impl BigStruct { fn new() -> Self { BigStruct { a: 1, b: 42, c: vec::from_elem(0u8, 0x1_000_000), } } fn initializer(mut self: Box) -> Box { self.a = 1; self.b = 42; self.c = vec::from_elem(0u8, 0x1_000_000); self } } fn main() { call_builder(); call_packer(); } fn call_builder() { let mut pool = SyncPool::with_builder(BigStruct::new); println!("Pool created..."); let big_box = pool.get(); assert_eq!(big_box.a, 1); assert_eq!(big_box.b, 42); assert_eq!(big_box.c.len(), 0x1_000_000); pool.put(big_box); } fn call_packer() { let mut pool = SyncPool::with_packer(BigStruct::initializer); println!("Pool created..."); let big_box = pool.get(); assert_eq!(big_box.a, 1); assert_eq!(big_box.b, 42); assert_eq!(big_box.c.len(), 0x1_000_000); pool.put(big_box); }