2016-08-24 56 views
0

我有HashMap與自定義散列。這HashMap的項目,而不執行特徵Clone(這是一個特點),但有功能克隆這樣的項目:如何克隆包含盒裝特徵對象的HashMap?

use std::collections::HashMap; 
use std::hash::BuildHasherDefault; 

use fnv::FnvHasher; 

trait Item { 
    fn get_id(&self) -> i32; 
    fn cloned(&self) -> Box<Item>; 
} 

#[derive(Clone)] 
struct ItemImpl { 
    id: i32, 
    foo: i32 
} 

impl Item for ItemImpl { 
    fn get_id(&self) -> i32 { self.id } 
    fn cloned(&self) -> Box<Item> { Box::new(self.clone()) } 
} 

fn main() { 
    let hash_map = HashMap::<i32, Box<Item>, BuildHasherDefault<FnvHasher>>::default(); 
} 

我怎麼能克隆hash_map不久(代碼)和高效(不創建一個臨時的集合) ?

+0

我不認爲你可以使用'HashMap中:: <123-132,項目,...>'在所有的值應該是一個尺寸類型等但一個特點是Unsized。 – kennytm

+0

你能否實施'克隆'? –

+1

這個問題提出的問題並不清楚。你能否多說一下你想解決的問題? – BurntSushi5

回答