Rust 为什么std::panic::Location::caller不返回选项?
国家的定义:Rust 为什么std::panic::Location::caller不返回选项?,rust,Rust,国家的定义: pub fn caller()->&'static Location正在运行的函数不可能没有调用者,因此没有时间将None作为可能的返回值 你可能会被这条看似措词不当的条款弄糊涂: 如果该函数的调用者被注释为[sic],那么它的调用位置将被返回 这可能应该用“用.[track\u caller]注释”。这意味着,当属性存在时,就好像函数不存在,并且在调用它的地方以文本形式内联 另见: 正在运行的函数不可能没有调用者,因此没有时间可以将None作为可能的返回值 你可能会被这条
pub fn caller()->&'static Location正在运行的函数不可能没有调用者,因此没有时间将None
作为可能的返回值
你可能会被这条看似措词不当的条款弄糊涂:
如果该函数的调用者被注释为[sic],那么它的调用位置将被返回
这可能应该用“用.[track\u caller]
注释”。这意味着,当属性存在时,就好像函数不存在,并且在调用它的地方以文本形式内联
另见:
正在运行的函数不可能没有调用者,因此没有时间可以将
None
作为可能的返回值
你可能会被这条看似措词不当的条款弄糊涂:
如果该函数的调用者被注释为[sic],那么它的调用位置将被返回
这可能应该用“用.[track\u caller]
注释”。这意味着,当属性存在时,就好像函数不存在,并且在调用它的地方以文本形式内联
另见:
您提到了遍历调用堆栈,但据我所知,这不是此API的用例。考虑到查找Location::caller()
的给定调用站点的特定调用方的用法,None
将是响应值的情况是什么?啊,你是对的,我认为函数是caller(&self)->Location
,你可以从PanicInfo::Location
获取根位置,这样您就可以在(location=location.caller()){…}
时通过遍历调用堆栈。但它并没有给你这一点,只是在堆栈的某个地方,你提到了遍历调用堆栈,但据我所知,这不是这个API的用例。考虑到查找Location::caller()
的给定调用站点的特定调用方的用法,None
将是响应值的情况是什么?啊,你是对的,我认为函数是caller(&self)->Location
,你可以从PanicInfo::Location
获取根位置,这样您就可以在(location=location.caller()){…}
时通过遍历调用堆栈。但是它没有给你这个,只是堆栈上的某个地方的一个点。我想这只是被我误解了-我以为这意味着只有当函数用track\u caller
注释时它才会工作。我还错过了它没有一个&self
参数,这让我觉得它支持像这里这样的链接。caller().caller()
在调用链上走两步。我想这只是我误读了——我原以为这意味着只有在函数被track\u caller
注释时它才会工作。我还没有注意到它没有一个&self
参数,这使我认为它支持像here.caller().caller()
这样的链接,以在调用链上执行两个步骤。