gpt4 book ai didi

rust - 当第一个参数为真时,为什么 `debug_assert` 不打印任何内容?

转载 作者:行者123 更新时间:2023-11-29 08:35:26 25 4
gpt4 key购买 nike

当我运行此代码并且在询问 lname 时未提供任何输入,然后 if 条件评估为 true 并执行行 println!("lname是空的"); 但为什么 debug_assert 不打印任何东西?

use std::io;

struct Test {
fname: String,
lname: String,
}

fn main() {
println!("Enter your point!");

println!("Please input fname: ");

let mut p = Test { fname: String::new(), lname: String::new() };

io::stdin().read_line(&mut p.fname).expect("something went wrong!");

println!("Please input lname: ");

io::stdin().read_line(&mut p.lname).expect("something went wrong!");

let p = Test { fname: p.fname.trim().to_string(), lname: p.lname.trim().to_string() };

if p.lname == "" {
println!("lname is empty");
}

if p.fname == "" {
println!("fname is empty");
}

debug_assert!(p.lname == "", "Last name is empty");

println!("Full name: {} {}", p.fname, p.lname);
}

此外,隐藏前面的变量 p 以删除末尾的换行符是一种好方法吗?

最佳答案

因为那是它应该做的?来自documentation of debug_assert!

Ensure that a boolean expression is true at runtime.

This will invoke the panic! macro if the provided expression cannot be evaluated to true at runtime.

你说

the if condition evaluates to true

因为条件为真,断言确保它为真,所以断言不会失败。

关于rust - 当第一个参数为真时,为什么 `debug_assert` 不打印任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36251379/

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