Here's a lovely error.
error: mismatched types: expected `wg::Value`, found `&wg::Value` (expected enum wg::Value, found &-ptr)
cards.push(Card::new(value.clone(), suit.clone()));
Solution
cards.push(Card::new(*value.clone(), *suit.clone()));
Oh, back to pointers already.
For the record, I've changed how this single line works at least three times since I wrote the original code in 0.12.