indygreg / apple-platform-rs

Rust crates supporting Apple platform development
565 stars 38 forks source link

Compilation error in apple-codesign: method takes 3 generic arguments but 2 generic arguments were supplied #137

Closed liias closed 5 months ago

liias commented 5 months ago

cargo install apple-codesign fails to compile (using macos):

error[E0107]: method takes 3 generic arguments but 2 generic arguments were supplied
  --> /Users/madis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/apple-codesign-0.27.0/src/plist_der.rs:78:17
   |
78 |         decoder.decode_sequence::<Self, _>(tag, |decoder| {
   |                 ^^^^^^^^^^^^^^^   ----  - supplied 2 generic arguments
   |                 |
   |                 expected 3 generic arguments
   |
note: method defined here, with 3 generic parameters: `D`, `DF`, `F`
  --> /Users/madis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rasn-0.12.6/src/de.rs:86:8
   |
86 |     fn decode_sequence<D, DF, F>(
   |        ^^^^^^^^^^^^^^^ -  --  -
help: add missing generic argument
   |
78 |         decoder.decode_sequence::<Self, _, F>(tag, |decoder| {
   |                                          +++

error[E0061]: this method takes 3 arguments but 2 arguments were supplied
  --> /Users/madis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/apple-codesign-0.27.0/src/plist_der.rs:78:17
   |
78 |           decoder.decode_sequence::<Self, _>(tag, |decoder| {
   |  _________________^^^^^^^^^^^^^^^^^^^^^^^^^^-
79 | |             let mut dict = plist::Dictionary::new();
80 | |
81 | |             loop {
...  |
93 | |             Ok(Self(dict))
94 | |         })
   | |__________- an argument is missing
   |
note: method defined here
  --> /Users/madis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rasn-0.12.6/src/de.rs:86:8
   |
86 |     fn decode_sequence<D, DF, F>(
   |        ^^^^^^^^^^^^^^^
help: provide the argument
   |
78 ~         decoder.decode_sequence::<Self, _>(tag, |decoder| {
79 +             let mut dict = plist::Dictionary::new();
80 + 
81 +             loop {
82 +                 let entry = decoder.decode_optional::<DictionaryEntry>()?;
83 + 
84 +                 if let Some(entry) = entry {
85 +                     let value = plist::Value::try_from(entry.value)?;
86 + 
87 +                     dict.insert(entry.key, value);
88 +                 } else {
89 +                     break;
90 +                 }
91 +             }
92 + 
93 +             Ok(Self(dict))
94 +         }, /* decode_fn */)
   |

error[E0107]: method takes 3 generic arguments but 2 generic arguments were supplied
   --> /Users/madis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/apple-codesign-0.27.0/src/plist_der.rs:241:17
    |
241 |         decoder.decode_sequence::<Self, _>(tag, |decoder| {
    |                 ^^^^^^^^^^^^^^^   ----  - supplied 2 generic arguments
    |                 |
    |                 expected 3 generic arguments
    |
note: method defined here, with 3 generic parameters: `D`, `DF`, `F`
   --> /Users/madis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rasn-0.12.6/src/de.rs:86:8
    |
86  |     fn decode_sequence<D, DF, F>(
    |        ^^^^^^^^^^^^^^^ -  --  -
help: add missing generic argument
    |
241 |         decoder.decode_sequence::<Self, _, F>(tag, |decoder| {
    |                                          +++

error[E0061]: this method takes 3 arguments but 2 arguments were supplied
   --> /Users/madis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/apple-codesign-0.27.0/src/plist_der.rs:241:17
    |
241 |   ...   decoder.decode_sequence::<Self, _>(tag, |decoder| {
    |  _______________^^^^^^^^^^^^^^^^^^^^^^^^^^-
242 | | ...       let _ = decoder.decode_integer(Tag::INTEGER, Constraints::N...
243 | | ...       let value = WrappedValue::decode(decoder)?;
244 | | ...
245 | | ...       Ok(Self(value))
246 | | ...   })
    | |________- an argument is missing
    |
note: method defined here
   --> /Users/madis/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rasn-0.12.6/src/de.rs:86:8
    |
86  |     fn decode_sequence<D, DF, F>(
    |        ^^^^^^^^^^^^^^^
help: provide the argument
    |
241 ~         decoder.decode_sequence::<Self, _>(tag, |decoder| {
242 +             let _ = decoder.decode_integer(Tag::INTEGER, Constraints::NONE)?;
243 +             let value = WrappedValue::decode(decoder)?;
244 + 
245 +             Ok(Self(value))
246 +         }, /* decode_fn */)
    |

Some errors have detailed explanations: E0061, E0107.
For more information about an error, try `rustc --explain E0061`.
error: could not compile `apple-codesign` (lib) due to 4 previous errors
roblabla commented 5 months ago

rasn introduced a breaking change in 0.12.6, specifically in this commit

I made an issue on their side. Ideally they should yank their broken release, and make a new 0.13.0.

roblabla commented 5 months ago

rasn 0.12.6 got yanked, so installing apple-codesign should now work properly, so I'll be closing this issue as fixed.

Feel free to reopen if you have further issues.