作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究Rust的一生。生存期由'a
表示,可以像这样使用:
fn function1<'a>(param1: &'a str) -> &'a str
但是我发现了这段代码:
impl<'a, T: 'a> RingBuffer<'a, T> {
对我来说,
T
的类型为
'a
毫无意义。类型和生命周期对我来说不是一回事。发生了什么?
最佳答案
当您看到通用类型参数后跟冒号和生存期时,表示生存期范围已放置在该类型上。
例如,如果您引用了:
impl<'a, T: 'a> RingBuffer<'a, T> {
T
类型的生存时间至少应与生存期
'a
一样长(请注意,编译器不知道T是什么-T本身可能包含引用或包含其他包含引用的类型)。
RingBuffer
可能包含对借用缓冲区的引用(通过
ManagedSlice)。这是有道理的:如果您使用堆栈分配的缓冲区创建
RingBuffer
,则缓冲区的使用时间至少必须与
RingBuffer
一样长。
关于generics - 当泛型类型受到泛型生存期的限制时,这意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61884836/
我正在使用身份服务器 3 保护 Web 应用程序。我的应用程序分为 2 个 oidc 客户端,一个 ASP.Net MVC 客户端和一个使用 oidc-client javascript 库的 jav
我正在使用 Silex 构建一个小型后台项目,我正在使用 PdoSessionHandler 将 session 存储在数据库中。我已经成功地将 session 存储在数据库中,但似乎将 cookie
我是一名优秀的程序员,十分优秀!