2016-03-26 11 views
-4

からのマクロを使用することができません:私が使用している場合私は<a href="https://github.com/auseckas/rsfuzzy" rel="nofollow">rsfuzzy</a>からマクロを使用しようとするプロジェクトいるrsfuzzyクレート

<rsfuzzy macros>:3:22: 3:41 error: failed to resolve. Use of undeclared type or module `fuzzy::mf` [E0433] 
<rsfuzzy macros>:3 let mut vars : Vec < fuzzy:: mf:: MfType > = Vec:: new () ; $ (

:私はコンパイルすると、私のようなエラーを

#[macro_use] 
extern crate rsfuzzy; 

fn main() { 
    fz_input_var!(); 
} 

を取得「ファジーようにexternクレートrsfuzzy」推薦して、私はエラーの別のリストを取得:

failed to resolve. Use of undeclared type or module `TXParserError` [E0433]at line 9 col 1 in <rsfuzzy macros> 
unresolved name `TXParserError::from_complex` [E0425]at line 9 col 1 in <rsfuzzy macros> 
             ^~~~~~~~~~~~~~~~~~~ 

答えて

1

「rsfuzzy」クレートこの問題を引き起こしているように見えるコーディングが貧弱になります。ここでthe first macro I foundの例です:

#[macro_export] 
macro_rules! fz_input_var { 
    ($($x:expr),*) => { 
     { 
      let mut vars: Vec<fuzzy::mf::MfType> = Vec::new(); 
      $(
       let value = match $x.0 { 
        "triangle" => fuzzy::mf::Triangle::new($x.1, $x.2), 
        "trapezoid" => fuzzy::mf::Trapezoid::new($x.1, $x.2), 
        "up" => fuzzy::mf::Up::new($x.1, $x.2), 
        "down" => fuzzy::mf::Down::new($x.1, $x.2), 
        _ => return Err(TXParserError::from_complex("No MF found for type", $x.0)) 

       }; 
       vars.push(value); 

      )* 
      fuzzy::InputVar::new(vars) 
     } 
    }; 
} 

あなたはクレートの名前はfuzzyするマクロハードコードすることを確認することができます。よく書かれた箱は$crate macro variableでこの問題を解決します。

プルリクエストまたは問題を元のプロジェクトに提出する必要があります。その間に回避策として、あなたはそれをインポートするときに箱の名前を変更することができます:

extern crate rsfuzzy as fuzzy; 
+0

ええ、私はそれを試みましたが、それはエラーを解決しますが、新しいものが表示されます。 – HPerin

関連する問題

 関連する問題