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()
这样的链接,以在调用链上执行两个步骤。