首页 > 解决方案 > 为什么 Rust 编译器没有阻止我使用智能指针 RefCell 改变 const 数据类型?

问题描述

我很惊讶地看到智能指针 RefCell 可以改变任何类型的数据,因为我希望甚至可以改变 const。为什么不能通过智能指针改变 const 数据?如果我认为 const 永远无法更改,那么为什么尝试修改 const 数据成功执行?

 const NAME : RefCell<&str> = RefCell::new("XYZ");
    println!("The const NAME is: {}",*NAME.borrow_mut());

 *NAME.borrow_mut() = "abc";
    println!("The mutated NAME is: {}",*NAME.borrow());

我完全想知道为什么即使编译器成功执行了代码也没有修改 const 数据。我希望编译器会阻止我进行修改,但实际上并没有?这是输出,

The name is: XYZ
The mutated name is: XYZ

标签: rustconstantssmart-pointers

解决方案


推荐阅读