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;