這個問題煩了了我1個小時。
1fn parse_path_operation(
2 &mut self,
3 path: &str,
4 op: Option<Box<impl FnOnce(&mut Self) + ?Sized>>,
5 ) -> Result<bool, anyhow::Error>
6
7self.parse_path_operation(path, None::<Box<dyn FnOnce(&mut IDir)>>)?;
這裡記錄一下這個簽名的正確用法。
下次學乖了,這種編譯器大小未知的trait類型一定要用Box或者其他的智能指針包起來,我想寫成這樣的簽名完全不行,雖然被調用方的簽名能通過編譯,但是調用方的簽名始終有問題,網上找了半天,還是得用智能指針管用…
1Option<impl FnOnce(&mut Self) + ?Sized>