Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 更改静态字符串值_Rust - Fatal编程技术网

Rust 更改静态字符串值

Rust 更改静态字符串值,rust,Rust,我有一个静态可变值: static mut ADDRESS: &'static str = ""; 它是全局的,不具有任何功能 现在我有一个问题: 我有读取该值的函数,它们工作正常,但当我试图使函数从参数中更改该值时,它开始哭喊该值“活得不够长” 我能用它做什么?在每种情况下传输地址都不是一个变量,我真的需要一个简单的全局变量 ADDRESS = input.as_str() 不太管用 但是 工作正常。函数完成后,您的字符串将被删除。因此,您不能将对的引用存储在静

我有一个静态可变值:

static mut ADDRESS: &'static str = "";
它是全局的,不具有任何功能

现在我有一个问题:
我有读取该值的函数,它们工作正常,但当我试图使函数从参数中更改该值时,它开始哭喊该值“活得不够长”

我能用它做什么?在每种情况下传输地址都不是一个变量,我真的需要一个简单的全局变量

ADDRESS = input.as_str()
不太管用

但是


工作正常。

函数完成后,您的
字符串将被删除。因此,您不能将对的引用存储在
静态变量中:

地址=&input;
//^^^^^^输入的寿命不够长
//地址要求为“静态”借用“输入”`
}
//<`input`在仍按地址借用时被丢弃在此处
相反,您需要存储分配的全局堆
String
。有几种方法可以分配全局堆变量。在您的情况下,您可以使用
thread\u local
global
static
变量并将字符串包装在
单元格中,该单元格提供了可变性:

使用std::cell::cell;
本地线程!(静态地址:Cell=Cell::new(“.to_string());
#[没有损坏]
发布不安全外部fn Java\u Rust\u设置地址(
环境:JNIEnv,,
_:JClass,
地址:JString
) {
让输入:String=env.get_String(address).expect(“无法获取java字符串!”).into();
ADDRESS.with(| ADDRESS | ADDRESS.set(输入));
}

函数完成后,您的
字符串将被删除。对它的引用不能放在具有静态生存期的静态变量中。这是否回答了您的问题@Aplet123从变量或从变量值生成地址值对我来说并不重要。我不敢相信2010年的编程语言和这么大的社区没有我需要的那么简单的功能。问题是静态可变数据并不简单。
ADDRESS = input.as_str()
ADDRESS = "Something"