链接 - Url

Url 是 Sui Move 库中提供的一种方便的类型,用于明确标记结构体中的字段或函数的参数为 URL。这对于 Move 语言来说很有用,因为它可以理解字段的类型,并在字段使用不当时提供更好的错误消息。开发者应尽可能将存储值用作 Url 或接受 Url 参数。请注意,交易不能将 Url 作为参数传递,因此 Url 应仅用作非用户直接调用的函数的参数。

public struct MyStruct {
    url: Url,
}

public fun take_url(url: Url) {
    // ...
}

Url 可以使用 new_unsafe 函数创建,该函数接受一个字符串作为参数。此函数不会验证字符串,因此开发者有责任确保字符串是一个有效的 URL。new_unsafe_from_bytes 函数也可以用来从字节向量创建一个 Url。如果字节不是有效的 ASCII,这个函数将中止。

use 0x1::sui::url;

public fun main() {
    let url = url::new_unsafe(b"https://example.com");
    let url_bytes = vector::from_hex("68747470733a2f2f6578616d706c652e636f6d");
    let url_from_bytes = url::new_unsafe_from_bytes(url_bytes);
}

inner_url 函数可以用于从 Url 获取内部 URL 作为字符串。update 函数可以用于更新 Url 的内部 URL。

use 0x1::sui::url;
let url = url::new_unsafe(b"https://example.com");
let inner_url = url::inner_url(&url);

一个 Url 可以使用 update 函数进行更新。此函数接受一个对 Url 的可变引用和一个字符串作为参数。该字符串将替换 Url 的内部 URL。

use 0x1::sui::url;
let url = url::new_unsafe(b"https://example.com");
url::update(&mut url, b"https://example2.org");