小编Lin*_*nk0的帖子

Clang 未在 -g 标志上生成调试信息

在 Windows 上使用 clang v8.0.0(来自 llvm 预构建二进制文件)时,gdb 或 lldb 调试器不会选择源映射表-g-gline-tables-only源映射表。

包含-g标志文件的大小会增加(这是意料之中的),但 gdb 和 lldb 都没有选择源

当使用 gcc 编译-g时,调试器会检测到(带有标志)源文件。

我曾尝试clang -g <codefile>在 macOS High Sierra(clang -v说它是)上运行相同的命令 ( ),Apple LLVM version 10.0.0 (clang-1000/10.44.4)其中 lldb 正在获取源文件。所以我猜它是本地化到我的 widows 实例或 llvm for windows build。

clang -vWindows 上的PS 输出:

clang version 8.0.0 (tags/RELEASE_800/final)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin
Run Code Online (Sandbox Code Playgroud)

c c++ windows llvm clang

11
推荐指数
1
解决办法
3089
查看次数

Rust sqlx:没有查询终结器

问题是当我输入这样的代码时。

let data = sqlx::query("SELECT id, name FROM test")
        .fetch_all(&pool)
        .await;
Run Code Online (Sandbox Code Playgroud)

我收到一个no method named `fetch_all` found for struct `sqlx_core::query::Query<'_, _>` in the current scope错误。以下为官方入门自述文件。这也适用于该query_as方法。我怀疑由于某种原因编译器没有“看到”sqlx::Query特征方法,但我不知道如何将它们纳入范围。

虽然当我使用宏时sqlx::query!.fetch_all确实存在。

另外,还有一个不便之处,rust-analyzerLSP 告诉我变量的类型datastd::result::Result<[type error], [type error]>,这消除了使用自动完成和类型检查的任何可能性,除了运行(众所周知的慢)rust 编译器。

PS 我使用 PostgreSQL 作为数据库解决方案,如果这可能有帮助的话。

PSS 环境变量 DATABASE_URL 在编译时设置并且是正确的,因此宏会执行所有编译时验证工作。

postgresql rust rust-sqlx

6
推荐指数
1
解决办法
1756
查看次数

返回引用的返回函数

我想写一个简单的记忆功能。

fn memoize<K: Eq + Hash, V: Clone>(mut func: impl FnMut(&K) -> V) -> impl FnMut(K) -> V {
  let mut cache = HashMap::new();
  |key| {
    cache
      .entry(key)
      .or_insert_with_key(|k| func(k))
      .clone()
  }
}
Run Code Online (Sandbox Code Playgroud)

Eq + Hash对参数的约束似乎是合理的,但Clone对返回值的约束似乎是不必要的。理想情况下的签名是:

fn memoize<K: Eq + Hash, V>(mut func: impl FnMut(&K) -> V) -> impl FnMut(K) -> &mut V
Run Code Online (Sandbox Code Playgroud)

这需要指定返回引用的生命周期(有意义)。

理想情况&mut V下,只要函数的引用存在,它就应该存在(或者类似的东西&'a mut impl FnMut(K) -> &'a mut V:)

由于 Fn 特征的 impls 不稳定,如果我想留在 Fn 特征内(而不是用 some 编写我的结构fn …

rust

6
推荐指数
1
解决办法
134
查看次数

标签 统计

rust ×2

c ×1

c++ ×1

clang ×1

llvm ×1

postgresql ×1

rust-sqlx ×1

windows ×1