rust-unofficial/patterns

Incorrect text in Command pattern description

開放

#346 建立於 2023年2月18日

 (0 則留言) (0 個反應) (0 位負責人)Shell (292 個分叉)batch import
A-patternC-amendmentgood first issue

倉庫指標

星標
 (6,622 顆星)
PR 合併指標
 (30 天內沒有已合併 PR)

描述

Since function pointers implement all three traits Fn, FnMut, and FnOnce we could as well pass and store closures instead of function pointers.

This is not exactly correct function pointers can be created only from non-capturing closures. Which can be easily verified if you change example little bit:

error[[E0308]](https://doc.rust-lang.org/stable/error_codes/E0308.html): mismatched types
  --> src/main.rs:41:26
   |
41 |     schema.add_migration(|| format!("create {}",table), || "drop table".to_string());
   |            ------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected fn pointer, found closure
   |            |
   |            arguments to this function are incorrect
   |
   = note: expected fn pointer `fn() -> String`
                 found closure `[closure@src/main.rs:41:26: 41:28]`
note: closures can only be coerced to `fn` types if they do not capture any variables

貢獻者指南