From 68f74879ae5a76d7519b80ce8fb3194a2b2596ad Mon Sep 17 00:00:00 2001 From: zhaodiaoer Date: Sat, 20 Jul 2024 17:39:50 +0800 Subject: [PATCH] fix: error translation about how closure implement Fn traits Signed-off-by: zhaodiaoer --- src/ch13-01-closures.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ch13-01-closures.md b/src/ch13-01-closures.md index 36e9c88..eb0edfd 100644 --- a/src/ch13-01-closures.md +++ b/src/ch13-01-closures.md @@ -143,9 +143,9 @@ let add_one_v4 = |x| x + 1 ; 闭包捕获和处理环境中的值的方式影响闭包实现的 trait。Trait 是函数和结构体指定它们能用的闭包的类型的方式。取决于闭包体如何处理值,闭包自动、渐进地实现一个、两个或三个 `Fn` trait。 -1. `FnOnce` 适用于能被调用一次的闭包,所有闭包都至少实现了这个 trait,因为所有闭包都能被调用。一个会将捕获的值移出闭包体的闭包只实现 `FnOnce` trait,这是因为它只能被调用一次。 -2. `FnMut` 适用于不会将捕获的值移出闭包体的闭包,但它可能会修改被捕获的值。这类闭包可以被调用多次。 -3. `Fn` 适用于既不将被捕获的值移出闭包体也不修改被捕获的值的闭包,当然也包括不从环境中捕获值的闭包。这类闭包可以被调用多次而不改变它们的环境,这在会多次并发调用闭包的场景中十分重要。 +1. `FnOnce` 适用于能被调用一次的闭包,所有闭包都至少实现了这个 trait,因为所有闭包都能被调用。一个会将捕获的值移入闭包体的闭包只实现 `FnOnce` trait,这是因为它只能被调用一次。 +2. `FnMut` 适用于不会将捕获的值移入闭包体的闭包,但它可能会修改被捕获的值。这类闭包可以被调用多次。 +3. `Fn` 适用于既不将被捕获的值移入闭包体也不修改被捕获的值的闭包,当然也包括不从环境中捕获值的闭包。这类闭包可以被调用多次而不改变它们的环境,这在会多次并发调用闭包的场景中十分重要。 让我们来看示例 13-1 中使用的在 `Option` 上的 `unwrap_or_else` 方法的定义: