'expected slice, found u8' 使用 Kuchiki 解析字节时出错
'expected slice, found u8' error when parsing bytes with Kuchiki
我在尝试执行以下操作时 运行 遇到类型错误:
use kuchiki::parse_html;
use kuchiki::traits::*;
fn main() {
let data = r#"<!DOCTYPE html>
<html>
<body>
test
</body>
</html>"#;
let dom = parse_html()
.from_utf8()
.from_iter(data.as_bytes());
}
错误是:
error[E0271]: type mismatch resolving `<tendril::fmt::Bytes as tendril::fmt::SliceFormat>::Slice == u8`
--> src/main.rs:13:10
|
13 | .from_iter(data.as_bytes());
| ^^^^^^^^^ expected slice, found u8
|
= note: expected type `[u8]`
found type `u8`
= note: required because of the requirements on the impl of `std::convert::Into<tendril::tendril::Tendril<tendril::fmt::Bytes>>` for `&u8`
data.as_bytes()
returns 对一段字节 (&[u8]
) 的引用,所以我对 found u8
的来源感到困惑。我该如何纠正这个错误?
相关方法的文档 are here。
使用read_from()
代替from_iter()
,像这样:
use kuchiki::parse_html;
use kuchiki::traits::*;
fn main() {
let data = r#"<!DOCTYPE html>
<html>
<body>
test
</body>
</html>"#;
let dom = parse_html()
.from_utf8()
.read_from(&mut data.as_bytes());
}
你遇到了编译错误,因为 from_iter()
需要一个项目类型为 Tendril
的迭代器。 Tendril 是一种字符串,因此 data
的类型需要类似于 Vec<&[u8]>
,但您有 &[u8]
.
您也可以使用 from_iter()
使其工作,但它有点少 clear/efficient:
use kuchiki::parse_html;
use kuchiki::traits::*;
fn main() {
let data = r#"<!DOCTYPE html>
<html>
<body>
test
</body>
</html>"#;
let dom = parse_html()
.from_utf8()
.from_iter(vec![data.as_bytes()]);
}
我在尝试执行以下操作时 运行 遇到类型错误:
use kuchiki::parse_html;
use kuchiki::traits::*;
fn main() {
let data = r#"<!DOCTYPE html>
<html>
<body>
test
</body>
</html>"#;
let dom = parse_html()
.from_utf8()
.from_iter(data.as_bytes());
}
错误是:
error[E0271]: type mismatch resolving `<tendril::fmt::Bytes as tendril::fmt::SliceFormat>::Slice == u8`
--> src/main.rs:13:10
|
13 | .from_iter(data.as_bytes());
| ^^^^^^^^^ expected slice, found u8
|
= note: expected type `[u8]`
found type `u8`
= note: required because of the requirements on the impl of `std::convert::Into<tendril::tendril::Tendril<tendril::fmt::Bytes>>` for `&u8`
data.as_bytes()
returns 对一段字节 (&[u8]
) 的引用,所以我对 found u8
的来源感到困惑。我该如何纠正这个错误?
相关方法的文档 are here。
使用read_from()
代替from_iter()
,像这样:
use kuchiki::parse_html;
use kuchiki::traits::*;
fn main() {
let data = r#"<!DOCTYPE html>
<html>
<body>
test
</body>
</html>"#;
let dom = parse_html()
.from_utf8()
.read_from(&mut data.as_bytes());
}
你遇到了编译错误,因为 from_iter()
需要一个项目类型为 Tendril
的迭代器。 Tendril 是一种字符串,因此 data
的类型需要类似于 Vec<&[u8]>
,但您有 &[u8]
.
您也可以使用 from_iter()
使其工作,但它有点少 clear/efficient:
use kuchiki::parse_html;
use kuchiki::traits::*;
fn main() {
let data = r#"<!DOCTYPE html>
<html>
<body>
test
</body>
</html>"#;
let dom = parse_html()
.from_utf8()
.from_iter(vec![data.as_bytes()]);
}