gpt4 book ai didi

import - 导入模块并使用 cfg 属性时使用未声明的不稳定模块

转载 作者:行者123 更新时间:2023-11-29 08:06:15 24 4
gpt4 key购买 nike

我有以下代码:

#[cfg(all(feature = "unstable", unique))]
#[cfg(all(feature = "unstable", heap_api))]
#[cfg(all(feature = "unstable", alloc))]

use std::ptr::Unique;
use std::mem;
use alloc::heap;

pub struct Foo<T> {
arr: Unique<T>,
cap: usize,
probe_limit: usize,
}

但是,当我尝试使用 cargo build --features "unstable" 编译它时,出现编译错误。请注意,我使用的是 Rust 的夜间构建,并且正确设置了不稳定的功能(否则我会得到不同的错误)。

error[E0412]: cannot find type `Unique` in this scope
--> src/hash/arr.rs:27:8
|
27 | arr: Unique<T>,
| ^^^^^^ not found in this scope
|
help: possible candidate is found in another module, you can import it into scope
| use std::ptr::Unique;

我不确定为什么找不到 Unique。我应该在我的文件顶部使用它。 使用::std::ptr::Unique 不起作用。

最佳答案

让我们解构你的cfg指令:

#[cfg(all(feature = "unstable", unique))]

这是一个 outer 属性,意味着它在要更改的项目之外,并将应用于下一个项目。加上cfg属性,表示“如果括号内的特性被启用,则执行下一个 block ”,all是特性之间的AND。所以你有类似“如果启用了不稳定和独特的功能,则执行下一条语句。

Attributes !如果您在命令行上设置了 unstable 功能,您想要的是有条件地拥有 inner 属性 feature(unique) 。可以使用 cfg_attr 获得条件属性.

#![cfg_attr(feature = "unstable", feature(unique))]

这可以理解为启用了 unstable 功能,然后启用内部 feature(unique)。然后您将能够使用 std::ptr::Unique

您还应该在 use 和您的 struct 之前添加一个 #[cfg(feature = "unstable")],以便它们如果未启用该功能,将无法使用。

关于import - 导入模块并使用 cfg 属性时使用未声明的不稳定模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44249423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com