You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust中无法使用bluer 0.15.0 crate部分组件的问题咨询

解决bluer 0.15.0中Advertisement和Result未找到的问题

1. 确保Cargo.toml启用必要特性

bluer的广告相关功能需要手动启用adv特性,修改你的Cargo.toml:

[dependencies]
bluer = { version = "0.15.0", features = ["adv"] }
tokio = { version = "1.0", features = ["full"] }
env_logger = "0.10"

注:tokio和env_logger是示例代码的依赖项,需要一并添加。

2. 修正代码中的导入与路径问题

原代码缺少必要的导入声明,且部分类型路径未正确引用,修正后的完整代码如下:

use bluer::{adv::Advertisement, Error, Result, Session};
use std::time::Duration;
use tokio::io::{BufRead, BufReader};
use tokio::time::sleep;

async fn main() -> Result<()> {
    env_logger::init();
    let session = Session::new().await?;
    let adapter = session.default_adapter().await?;
    adapter.set_powered(true).await?;

    println!(
        "Advertising on Bluetooth adapter {} with address {}",
        adapter.name(),
        adapter.address().await?
    );
    let le_advertisement = Advertisement {
        advertisement_type: bluer::adv::Type::Peripheral,
        service_uuids: vec!["123e4567-e89b-12d3-a456-426614174000".parse().unwrap()]
            .into_iter()
            .collect(),
        discoverable: Some(true),
        local_name: Some("le_advertise".to_string()),
        ..Default::default()
    };
    println!("{:?}", &le_advertisement);
    let handle = adapter.advertise(le_advertisement).await?;

    println!("Press enter to quit");
    let stdin = BufReader::new(tokio::io::stdin());
    let mut lines = stdin.lines();
    let _ = lines.next_line().await;

    println!("Removing advertisement");
    drop(handle);
    sleep(Duration::from_secs(1)).await;

    Ok(())
}

关键修正点:

  • 显式导入Advertisement:use bluer::adv::Advertisement;,该类型位于bluer::adv子模块下,默认不会自动导入
  • 导入bluer::Result和Error:use bluer::{Result, Error};,让main函数的返回值类型能被正确识别
  • 添加tokio相关导入:示例代码用到了tokio的异步IO和sleep功能,需要导入对应模块

3. 验证并修复编译问题

执行以下命令验证代码:

cargo check

如果仍有编译错误,清理缓存后重新构建:

cargo clean
cargo build

内容的提问来源于stack exchange,提问作者Dome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:18:17