不会发送lazy_static全局字符串

问题描述 投票:0回答:1

我已经编写了这段代码,但是我仍然遇到问题...该字符串将不会打印,并且我不知道我在做什么错...

use lazy_static::lazy_static;
use std::io::{self, Write};
use std::sync::Mutex;

lazy_static! {
    static ref example: Mutex<String> = Mutex::new("example string".to_string());
}

fn main(){
    println!("{}", example);
}

我不知道哪里出问题了,我对这整个生锈的事物都是陌生的,但是我知道我需要在这里使用lazy_static全局可变变量,所以我需要它工作...

rust atom-editor
1个回答
0
投票

example不是字符串。它是包含MutexString。您必须先lock互斥体才能访问其内容:

use lazy_static::lazy_static;
use std::io::{self, Write};
use std::sync::Mutex;

lazy_static! {
    static ref example: Mutex<String> = Mutex::new("example string".to_string());
}

fn main(){
    println!("{}", example.lock().expect("Could not lock mutes"));
}

来源:引用https://doc.rust-lang.org/std/sync/struct.Mutex.html

每个互斥量都有一个类型参数,代表它所要存储的数据保护。只能通过RAII防护程序访问数据从locktry_lock返回,以保证数据是仅在互斥锁被锁定时才可以访问。

© www.soinside.com 2019 - 2024. All rights reserved.