首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建具有静态生存期的Uuid?

如何创建具有静态生存期的Uuid?
EN

Stack Overflow用户
提问于 2022-02-04 14:36:00
回答 2查看 352关注 0票数 0

我想有一个静态的Uuid在我的锈蚀程序,但我不知道如何做它。

我试过了,但不起作用

代码语言:javascript
复制
fn type_id() -> &'static uuid::Uuid {
    let tmp = "9cb4cf49-5c3d-4647-83b0-8f3515da7be1".as_bytes();
    let tmp = uuid::Uuid::from_slice(tmp).unwrap();
    &tmp
}

error: cannot return reference to local variable `tmp`
returns a reference to data owned by the current function (rustc E0515)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-04 14:56:42

假设您使用的是the uuid crate,一些“构造函数”函数是const。因此,您只需调用它们“通常”来初始化您的静态(这是一个const上下文)。

遗憾的是,操场上没有uuid,但我想出了如下几点:

代码语言:javascript
复制
static TYPE_ID: Uuid = Uuid::from_u128(0x9cb4cf49_5c3d_4647_83b0_8f3515da7be1);

或者使用hex_literal机箱,如果您更喜欢字符串外观:

代码语言:javascript
复制
static TYPE_ID: Uuid = Uuid::from_bytes(hex!("9cb4cf49 5c3d 4647 83b0 8f3515da7be1"));
票数 6
EN

Stack Overflow用户

发布于 2022-02-04 14:47:45

谢谢@PitaJ。使用once_cell:Lazy是可行的。我仍然想知道是否有一种更简单的方法来做这件事,所以我不会将答案标记为已被接受。

代码语言:javascript
复制
static TYPE_ID: Lazy<uuid::Uuid> = Lazy::new(|| {
    let tmp = "9cb4cf49-5c3d-4647-83b0-8f3515da7be1";
    let tmp = uuid::Uuid::from_str(tmp).unwrap();
    tmp
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70988130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档