当前位置: 首页 > 知识库问答 >
问题:

留档示例中未解析的导入

乐正宜人
2023-03-14

我很难修复库文档示例中的错误。我有类似于我的板条箱的文件结构

.
|-- Cargo.lock
|-- Cargo.toml
|-- examples
|   |-- dat
|   |   `-- euler_13.dat
|   |-- debug.rs
|   `-- euler_13.rs
|-- README.md
|-- src
|   |-- error.rs
|   |-- inits.rs
|   `-- lib.rs

在我的示例中,我的标题如下所示

// euler_13.rs 
extern crate bignum;
use bignum::inits::Zero;

// ...

这编译和工作得很好,但是现在当我在lib.rs的留档中编写示例时,我似乎无法导入bignum::inits::Zero

//lib.rs
//...

impl BigNum {

    //...


    /// Constructs a ...
    ///
    /// # Examples
    ///
    /// ```
    /// extern crate bignum;
    /// use bignum::inits::Zero;
    ///
    /// let a = bignum::BigNum::new(Zero::zero());
    /// ```
    ///
    pub fn new(base: BigNum) -> BigNum {
        // ...
    }

当我运行货物测试时,我收到此错误

     Running target/debug/lib-fe3dd7a75a504b04

running 3 tests
test crate_from_u32 ... ok
test create_from_string ... ok
test adding_no_carry ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured

   Doc-tests bignum

running 1 test
test new_0 ... FAILED

failures:

---- new_0 stdout ----
    <anon>:3:9: 3:15 error: unresolved import `self::bignum::inits::Zero`. Did you mean `self::self::bignum::inits`?
<anon>:3     use self::bignum::inits::Zero;
                 ^~~~~~
error: aborting due to previous error
thread 'new_0' panicked at 'Box<Any>', /home/rustbuild/src/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libsyntax/diagnostic.rs:192



failures:
    new_0

我见过这个问题,但这涉及从同一个文件导入模块,仍然需要顶级范围。然而,这里我仍然使用bignum::指定顶级范围。

因此,虽然导入bignum::inits::Zero适用于我的所有测试和示例,但它不适用于我的文档。为什么?我尝试在前面添加self::,但收到了相同的错误。如果我将文档示例更改为

extern crate bignum;

let a = bignum::BigNum::new(bignum::inits::Zero::zero());

然而,它编译得很好。如何正确导入模块?

共有2个答案

毋宸
2023-03-14

因此,生成此错误的原因归结为文档示例隐式使用了外部板条箱bignum,这意味着我不需要显式地告诉示例我将使用bignum。

这是有意义的,因为在文档级别,示例显示了板条箱特定部分的功能应该如何工作,因此您将使用bignum。cargo会识别并为您导入bignum。示例应为:

//lib.rs
//...

impl BigNum {

    //...


    /// Constructs a ...
    ///
    /// # Examples
    ///
    /// ```
    /// use bignum::inits::Zero;
    ///
    /// let a = bignum::BigNum::new(Zero::zero());
    /// ```
    ///
    pub fn new(base: BigNum) -> BigNum {
        // ...
    }
}
訾旭
2023-03-14

我认为问题源于doc测试的这个有用特性:

rustdoc将自动在代码周围的正确位置添加一个包装器。

如果应用链接中的规则,则最终会编译如下代码:

fn main() {
   extern crate bignum;
   use bignum::inits::Zero;

   let a = bignum::BigNum::new(Zero::zero());
}

正如第一条错误消息所示,您确实需要将其称为self::bignum。不幸的是,由于锈蚀问题23314,这一点目前无法实现。

 类似资料:
  • 有没有办法消除警告: 未解决的引用'DeviceManager'... 对于这种单例模式? 截图:

  • 我正在使用以下设置 macOS v10.14(Mojave) Python 3.7.1 Visual Studio代码1.30 Pylint 2.2.2 Django 2.1.4 我想在Visual Studio Code中使用lint让我的生活更轻松一点。但是,对于每个导入,我都有状态“未解析导入”。即使是默认的Django导入(即从django.db导入模型)。 我认为这是因为它没有看到虚拟环

  • 本文向大家介绍C#导出Excel的示例详解,包括了C#导出Excel的示例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C#导出Excel的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍详解java的四舍五入与保留位示例,包括了详解java的四舍五入与保留位示例的使用技巧和注意事项,需要的朋友参考一下 四舍五入是我们小学的数学问题,这个问题对于我们程序猿来说就类似于1到10的加减乘除那么简单了。在讲解之间我们先看如下一个经典的案例: Output:  12.5的四舍五入值:13  -12.5的四舍五入值:-12   这是四舍五入的经典案例,也是我们参加校招时候经常会

  • 本文向大家介绍java使用dom4j生成与解析xml文档的方法示例,包括了java使用dom4j生成与解析xml文档的方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java使用dom4j生成与解析xml文档的方法。分享给大家供大家参考,具体如下: xml是一种新的数据格式,主要用于数据交换。我们所用的框架都有涉及到xml。因此解析或生成xml对程序员也是一个技术难点。这里就用do

  • 本文向大家介绍Python中使用ElementTree解析XML示例,包括了Python中使用ElementTree解析XML示例的使用技巧和注意事项,需要的朋友参考一下 【XML基本概念介绍】 XML 指可扩展标记语言(eXtensible Markup Language)。 XML 被设计用来传输和存储数据。 概念一: 概念二: 概念三: 概念四: 概念五: 概念六: 【XML几种解析方法】