小编Ter*_*eus的帖子

为什么 Rust 不能使用 const 作为字面量?

考虑这个代码:

const VERSION: &'static str = env!("CARGO_PKG_VERSION");

fn main() {
    // OK
    println!("{}", "0.1.0");
    // OK
    println!("{}", env!("CARGO_PKG_VERSION"));
    // OK
    println!("{}", VERSION);
    // OK
    println!("0.1.0");
    // OK
    println!(env!("CARGO_PKG_VERSION"));
    // error: format argument must be a string literal
    println!(VERSION);
}
Run Code Online (Sandbox Code Playgroud)

const的 Rust 文档声明const创建一个编译时常量,并且在env! 声明env!宏创建了一个编译时已知&'static str值。

我很好奇,鉴于所有这三个值在编译时都是已知的并且具有固定大小,为什么它们不能互换使用?为什么它们在语义上不等价?

language-lawyer rust

7
推荐指数
0
解决办法
228
查看次数

GDB + Rust,如何打印 std::path::Path 函数调用

我想打印调用实例函数的结果std::path::Path

我正在使用 Rust 1.43 和 GDB 9.1

主程序.rs

use std::path::Path;

fn main() {
    let path = Path::new("/home/sweet/home");
    println!("The path: {}", path.display());
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 rust-gdb 调试它时,我得到以下信息:

$ rust-gdb target/debug/poc-gdb-pathbuf
...
>>> start
>>> n
>>> print path
$1 = (*mut std::path::Path) 0x55555557c000
>>> print &path
$2 = (*mut *mut std::path::Path) 0x7fffffffe0c0
>>> print *path
$3 = std::path::Path {
  inner: std::ffi::os_str::OsStr {
    inner: std::sys_common::os_str_bytes::Slice {
      inner: 0x55555557c000
    }
  }
}
>>> print *path.is_absolute()
Could not find function named 'std::path::Path::is_absolute'
>>> …
Run Code Online (Sandbox Code Playgroud)

gdb rust

3
推荐指数
1
解决办法
1081
查看次数

标签 统计

rust ×2

gdb ×1

language-lawyer ×1