rust 如何从core导入类型'uint'

zbdgwd5y  于 2023-01-05  发布在  其他
关注(0)|答案(1)|浏览(115)

我在rust中找到了实现b-tree的代码:
https://github.com/rust-lang/rust/blob/b6edc59413f79016a1063c2ec6bc05516bc99cb6/src/libcollections/btree/map.rs
其中使用uint

pub struct BTreeMap<K, V> {
    root: Node<K, V>,
    length: uint,
    depth: uint,
    b: uint,
}

我想重写这个实现,复制了这个片段,但是看到了错误

error[E0412]: cannot find type `uint` in this scope
 --> src/bin/prepare-btree.rs:9:13
  |
9 |     length: uint,
  |             ^^^^ not found in this scope

我试着加上

use core::prelude::*;

以及

use {core::primitive::uint};

但没有用。
我的文件中的所有"导入"如下所列:

use std::io::{BufRead, BufReader};
use std::fs::File;
use {core::iter::Map};

original code中,我找不到导入uint的位置。
uint的文档:
https://doc.rust-lang.org/core/primitive.unit.html
问题:

  • use core::prelude::*;是如何工作的?为什么github link的代码中可以使用uint
  • 如何修复我代码中的cannot find type uint in this scope
os8fio9y

os8fio9y1#

这段代码在1.0版本之前就已经很老了(2014年)。uint是当时的东西。当前代码位于https://github.com/rust-lang/rust/blob/3b1c8a94a4e8a6ba8bc7b39cc3580db9e5b72295/library/alloc/src/collections/btree/map.rs#L172:

pub struct BTreeMap<
    K,
    V,
    #[unstable(feature = "allocator_api", issue = "32838")] A: Allocator + Clone = Global,
> {
    root: Option<Root<K, V>>,
    length: usize,
    /// `ManuallyDrop` to control drop order (needs to be dropped after all the nodes).
    pub(super) alloc: ManuallyDrop<A>,
    // For dropck; the `Box` avoids making the `Unpin` impl more strict than before
    _marker: PhantomData<crate::boxed::Box<(K, V)>>,
}

相关问题