gpt4 book ai didi

rust - 如何在结构上与 Rust 中的私有(private)字段匹配?

转载 作者:行者123 更新时间:2023-12-04 07:56:36 31 4
gpt4 key购买 nike

我有一个函数,它返回一个包含私有(private)字段的错误类型。我希望调用者匹配此错误类型,并在匹配时打印硬编码错误消息。那是因为这个错误类型已经有了特定的含义,所以我对 err.display() 的消息不感兴趣。会回来的。
但是,该函数将来可能会返回不同的错误类型。如果发生这种情况,那么我希望现有的调用者得到一个编译错误,以便他们可以更新他们打印的错误消息。
但是,如果调用者匹配 Err(_) ,则错误类型的更改不会导致编译错误。
我该如何解决这个问题?一种方法是匹配特定的错误类型,但如果错误类型具有私有(private)字段,这似乎是不可能的。
这是示例代码:

use std::ffi::{CString, NulError};

fn create_cstring() -> Result<CString, NulError> {
return CString::new("hello");
}

fn main() {
match create_cstring() {
Ok(val) => println!("Output: {:?}", val),
Err(_) => println!("Error: input contains forbidden null bytes"),
};
}
假设我更改 create_cstring()的签名并使其返回 NulError 以外的内容。如何制作 match block 编译失败?

最佳答案

使用..匹配私有(private)字段:

use std::ffi::{CString, NulError};

fn create_cstring() -> Result<CString, NulError> {
return CString::new("hello");
}

fn main() {
match create_cstring() {
Ok(val) => println!("Output: {:?}", val),
Err(NulError{..}) => println!("Error: input contains forbidden null bytes"),
};
}
Playground

关于rust - 如何在结构上与 Rust 中的私有(private)字段匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66674694/

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