diff --git a/Cargo.toml b/Cargo.toml
index b522d86..f7ddaee 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -17,3 +17,4 @@ select = "0.3.0"
hyper = "0.9.18"
serde_json = "0.9"
retry = { git = "https://github.com/jimmycuadra/retry", rev = "3fa812e650d64ede61ea243fb83ef1a222ff0f84" }
+mopa = "0.2.2"
diff --git a/src/lib.rs b/src/lib.rs
index bbf7427..b49fc74 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -3,9 +3,13 @@ extern crate select;
extern crate serde_json;
extern crate retry;
+#[macro_use]
+extern crate mopa;
+
pub mod searchers;
-use std::any::Any;
+//use std::any::Any;
+use mopa::Any;
pub trait Link: Any {
fn label (&self) -> &str;
@@ -13,6 +17,8 @@ pub trait Link: Any {
fn as_any(&self) -> &Any;
}
+mopafy!(Link);
+
impl Link for Box {
fn label (&self) -> &str {
(**self).label()
diff --git a/src/main.rs b/src/main.rs
index 2a906ee..a9b545c 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -21,11 +21,12 @@ fn main () {
searchers.add_searcher("gp", Box::new(MediawikiSearcher::new(String::from("https://gammapedia.monarch-pass.net/wiki/"))));
searchers.add_searcher("ip", Box::new(MediawikiSearcher::new(String::from("http://infinitypedia.org/wiki/"))));
searchers.add_searcher("wp", Box::new(MediawikiSearcher::new(String::from("https://en.wikipedia.org/wiki/"))));
+
match searchers.exact_search(&term) {
Some(item) => {
- if let Some(card) = item.as_any().downcast_ref::() {
+ if let Some(card) = item.downcast_ref::() {
println!("{:?}", card);
- } else if let Some(card) = item.as_any().downcast_ref::() {
+ } else if let Some(card) = item.downcast_ref::() {
println!("{:?}", card);
} else {
println!("{}: {}", item.label(), item.url());
diff --git a/src/searchers/mediawiki.rs b/src/searchers/mediawiki.rs
index 3680688..095c0e1 100644
--- a/src/searchers/mediawiki.rs
+++ b/src/searchers/mediawiki.rs
@@ -15,7 +15,8 @@ use retry::delay::Fixed;
use std;
use std::io::Read;
-use std::any::Any;
+//use std::any::Any;
+use mopa::Any;
const NUM_RETRIES: usize = 10;
const RETRY_WAIT_MILLIS: u64 = 500;
diff --git a/src/searchers/mtg.rs b/src/searchers/mtg.rs
index 4860c14..4dec5fc 100644
--- a/src/searchers/mtg.rs
+++ b/src/searchers/mtg.rs
@@ -14,7 +14,8 @@ use retry::delay::Fixed;
use std;
use std::io::Read;
-use std::any::Any;
+//use std::any::Any;
+use mopa::Any;
const NUM_RETRIES: usize = 10;
const RETRY_WAIT_MILLIS: u64 = 500;
diff --git a/src/searchers/yugioh.rs b/src/searchers/yugioh.rs
index bb2d0cc..696a66e 100644
--- a/src/searchers/yugioh.rs
+++ b/src/searchers/yugioh.rs
@@ -14,7 +14,8 @@ use retry::delay::Fixed;
use std;
use std::io::Read;
-use std::any::Any;
+//use std::any::Any;
+use mopa::Any;
const NUM_RETRIES: usize = 10;
const RETRY_WAIT_MILLIS: u64 = 500;