rust - 如何为元组结构成员分配默认值

标签 rust

如何自动为元组结构成员分配默认值

struct A(f64, i32);

fn main() {
    let mut a: A; // expect a.0 = 0.0, a.1 = 0
    // even below 2 line code doesn't compile
    // a.0 = 1.2;
    // a.1 = 3;

    println!("{}, {}", a.0, a.1);
}

但是我遇到了以下错误

error[E0381]: used binding `a` isn't initialized
 --> src/main.rs:5:24
  |
4 |     let mut a: A; // expect a.0 = 0.0, a.1 = 0
  |         ----- binding declared here but left uninitialized
5 |     println!("{}, {}", a.0, a.1);
  |                        ^^^ `a.0` used here but it isn't initialized
  |

最佳答案

添加#[derive(Default)]并使用A::default进行初始化(或默认::default()):

#[derive(Default)]
struct A(f64, i32);

fn main() {
    let mut a = A::default(); // expect a.0 = 0.0, a.1 = 0
    
    println!("{}, {}", a.0, a.1);
}

关于rust - 如何为元组结构成员分配默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74205474/

相关文章:

file-io - 文本文件输入/输出期间的行尾转换

stream - 延迟 Tokio Stream

c++ - Rust 中不止一个运算符重载

generics - 将泛型参数与 impl 中的关联类型匹配

rust - &self 和 self 有什么区别?

rust - 如何链接到 rustdoc 中的其他 fns/structs/enums/traits?

rust - tokio::spawn(my_future).await 和只是 my_future.await 有什么区别?

rust - 为什么 if-let 表达式使用赋值运算符而不是相等运算符?

rust - 如何清除命令行?

rust - 使用 crossbeam::epoch 进行内存回收