gpt4 book ai didi

curl - 为什么我不能将切片更改为 H512?

转载 作者:行者123 更新时间:2023-11-29 08:31:11 24 4
gpt4 key购买 nike

我正在使用 primitive_type crate 并使用 rust-curl 发出一个 post Http 请求。

https://docs.rs/primitive-types/0.3.0/primitive_types/struct.H512.html https://docs.rs/curl/0.5.0/curl/easy/struct.Easy.html

pub fn hoge() {
let param = "http://someurl.com/api/";
let mut handle = Easy::new();
let mut r = String::new();
handle.url(&param.to_string()).unwrap();
handle.post(true).unwrap();
{
let mut transfer = handle.transfer();
transfer.write_function(|new_data| {
r = String::from_utf8(Vec::from(new_data)).unwrap();
Ok(stdout().write(new_data).unwrap())
}).unwrap();
transfer.perform().unwrap();
}
let b = H512::from_slice(&r.as_bytes());
}

它变成了错误:

thread 'main' panicked at 'assertion failed: `(left == right)`
left: `132`,
right: `64`', /Users/hogehoge/.cargo/registry/src/github.com-1ecc6299db9ec823/primitive-types-0.3.0/src/lib.rs:68:1
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

看起来参数长度不匹配但是有没有最好的方法返回 H512 类型?

最佳答案

就是这样解决的:

pub fn hoge() -> std::io::Result<(H512)> {
let param = "http://someurl.com/api/";
let mut handle = Easy::new();
let mut r = String::new();
handle.url(&param.to_string()).unwrap();
handle.post(true).unwrap();
{
let mut transfer = handle.transfer();
transfer.write_function(|new_data| {
r = String::from_utf8(Vec::from(new_data)).unwrap();
Ok(new_data.len())
}).unwrap();
transfer.perform().unwrap();
}
let r = r.replace("\"","").replacen("0x", "", 1);
let result = H512::from_slice(&hex::decode(&r).expect("decode failed"));
Ok(result)
}

有没有更好的方法?

关于curl - 为什么我不能将切片更改为 H512?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57357119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com