为了账号安全,请及时绑定邮箱和手机立即绑定

<>语法与常规生命周期绑定有何不同?

<>语法与常规生命周期绑定有何不同?

<>语法与常规生命周期绑定有何不同?请考虑以下代码:trait Trait<T> {}fn foo<'a>(_b: Box<Trait<&'a usize>>) {}fn bar(_b: Box<for<'a> Trait<&'a usize>>) {}这两个函数foo和bar似乎接受Box<Trait<&'a usize>>,虽然foo比更简明做它bar。他们之间有什么区别?另外,在什么情况下我需要for<>像上面那样的语法?我知道Rust标准库在内部使用它(通常与闭包有关),但为什么我的代码需要它呢?
查看完整描述

2 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

我相信他们被称为完全在HKT之后,因为他们确实像他们。我可以想象HKTs也可以写成for,如果它们可用:for<T> Monad<T>或者至少它们有类似的概念 - 指定无限数量的特征界限(或类型,如果是HKT),用某些东西(生命期或类型)参数化)。也就是说,HRTB可以设想支持类型以及生命周期,但是没有人想出具体的设计。

查看完整回答
反对 回复 2019-08-02
  • 2 回答
  • 0 关注
  • 405 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信