1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
use postgres_types::ToSql; type BucketValue = dyn ToSql + Sync; pub struct Bucket { content: Vec<Box<BucketValue>>, } impl Bucket { pub fn new() -> Bucket { Bucket { content: vec![] } } pub fn get_refs(self) -> Vec<&'static BucketValue> { let mut args: Vec<&BucketValue> = vec![]; for item in self.content { args.push(Box::leak(item)); } args } pub fn push<T: 'static + ToSql + Sync + Clone>(&mut self, value: T) -> usize { self.content.push(Box::new(value)); self.content.len() } pub fn len(&self) -> usize { self.content.len() } }