|
|
@ -118,7 +118,7 @@ fn build_user(email: String, username: String) -> User {
|
|
|
|
|
|
|
|
|
|
|
|
因为 `user2` 仅仅在 `email` 上与 `user1` 不同,因此我们只需要对 `email` 进行赋值,剩下的通过结构体更新语法 `..user1` 即可完成。
|
|
|
|
因为 `user2` 仅仅在 `email` 上与 `user1` 不同,因此我们只需要对 `email` 进行赋值,剩下的通过结构体更新语法 `..user1` 即可完成。
|
|
|
|
|
|
|
|
|
|
|
|
`..` 语法表明凡是我们没有显示声明的字段,全部从 `user1` 中自动获取。需要注意的是 `..user1` 必须在结构体的尾部使用。
|
|
|
|
`..` 语法表明凡是我们没有显式声明的字段,全部从 `user1` 中自动获取。需要注意的是 `..user1` 必须在结构体的尾部使用。
|
|
|
|
|
|
|
|
|
|
|
|
> 结构体更新语法跟赋值语句 `=` 非常相像,因此在上面代码中,`user1` 的部分字段所有权被转移到 `user2` 中:`username` 字段发生了所有权转移,作为结果,`user1` 无法再被使用。
|
|
|
|
> 结构体更新语法跟赋值语句 `=` 非常相像,因此在上面代码中,`user1` 的部分字段所有权被转移到 `user2` 中:`username` 字段发生了所有权转移,作为结果,`user1` 无法再被使用。
|
|
|
|
>
|
|
|
|
>
|
|
|
|