6个稳定版本
2.0.0 | 2023年7月2日 |
---|---|
1.2.0 | 2023年2月2日 |
1.1.0 | 2020年9月10日 |
1.0.2 | 2020年3月16日 |
#613在编码分类中
每月下载量30,692次
在88个crate中使用(直接使用9个)
29KB
684 行
Rust的百分号编码字符串
此crate提供了两种类型,PctStr
和PctString
,类似于str
和String
,表示在URL、URI、IRI等中使用的百分号编码字符串。您可以使用它们进行编码、解码和比较百分号编码字符串。
基本用法
您可以通过在一个str
切片上构建一个PctStr
切片来解析/解码百分号编码字符串。
use pct_str::PctStr;
let pct_str = PctStr::new("Hello%20World%21").unwrap();
assert_eq!(pct_str, "Hello World!");
let decoded_string: String = pct_str.decode();
assert_eq!(decoded_string, "Hello World!")
要创建新的百分号编码字符串,请使用PctString
来复制或编码新字符串。
use pct_str::{PctString, URIReserved};
// Copy the given percent-encoded string.
let pct_string = PctString::new("Hello%20World%21").unwrap();
// Encode the given regular string.
let pct_string = PctString::encode("Hello World!".chars(), URIReserved);
assert_eq!(pct_string.as_str(), "Hello%20World%21");
您可以通过实现Encoder
trait来选择由encode
函数编码的字符。
use pct_str::{URIReserved, PctString};
struct CustomEncoder;
impl pct_str::Encoder for CustomEncoder {
fn encode(&self, c: char) -> bool {
URIReserved.encode(c) || c.is_uppercase()
}
}
let pct_string = PctString::encode("Hello World!".chars(), CustomEncoder);
assert_eq!(pct_string.as_str(), "%48ello%20%57orld%21")
许可证
许可如下
- Apache许可证2.0版本(LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,您提交的任何有意包含在作品中的贡献,将如上所述双重许可,不附加任何额外的条款或条件。
依赖关系
~320–790KB
~18K SLoC