diff --git a/src/libregex/parse.rs b/src/libregex/parse.rs
index 60cf45aeddc1..78558a322665 100644
--- a/src/libregex/parse.rs
+++ b/src/libregex/parse.rs
@@ -77,14 +77,12 @@ pub enum Repeater {
OneMore,
}
-#[deriving(Show, Clone)]
+#[deriving(Copy, Show, Clone)]
pub enum Greed {
Greedy,
Ungreedy,
}
-impl Copy for Greed {}
-
impl Greed {
pub fn is_greedy(&self) -> bool {
match *self {
diff --git a/src/libregex/re.rs b/src/libregex/re.rs
index 53181bfbb7e3..151587e423ab 100644
--- a/src/libregex/re.rs
+++ b/src/libregex/re.rs
@@ -126,6 +126,7 @@ pub struct ExDynamic {
}
#[doc(hidden)]
+#[deriving(Copy)]
pub struct ExNative {
#[doc(hidden)]
pub original: &'static str,
@@ -135,8 +136,6 @@ pub struct ExNative {
pub prog: fn(MatchKind, &str, uint, uint) -> Vec