< 返回版块

hzqd 发表于 2023-02-07 22:39

Tags:生命周期

fn foo(v: &[u8]) -> Cow<'_, str> {}
fn bar<'a>(v: &'a [u8]) -> Cow<'a, str> {}

上述两个函数签名的生命周期是否等价?为什么?

评论区

写评论
github.com/shanliu/lsys 2023-02-08 23:53

生命周期 换个说法 变量的 有效范围 标记

根据 有效范围 在去看,就很直观了。。。

苦瓜小仔 2023-02-07 23:15

等价。因为是典型的 lifetime elision。来自 Reference 的例子:

fn new1(buf: &mut [u8]) -> Thing<'_>;                 // elided - preferred
fn new2(buf: &mut [u8]) -> Thing;                     // elided
fn new3<'a>(buf: &'a mut [u8]) -> Thing<'a>;          // expanded
1 共 2 条评论, 1 页