以下のコードでは、は の実装でstring
十分長く存続しません。メソッドの内部でスコープに入り、メソッドが終了するとスコープから外れる理由を理解していますが、それへの参照を保持します。Into<Body<'a>>
RequestParameters<'a>
string
into
Body<'a>
少なくとも、それがstring
長続きしない理由だと思います。
私が理解していないのは、このコードを構造化してstring
の寿命を修正する方法です。
このコードの目的は、HashMap ( "a"
to"b"
など) を POST リクエストの本文 ( など) の文字列にすること"?a=b"
です。これを行うためのより良い方法がある場合はお知らせください。ただし、この生涯の問題を修正する方法を理解することは、私にとって大きなメリットとなります。
string
なぜ長生きしないのかについて私が間違っている場合は、私にも知らせてください. 私はまだ Rust のライフタイム システムを理解しようとしているところなので、これを理解することは非常に役立ちます。
struct RequestParameters<'a> {
map: HashMap<&'a str, &'a str>,
}
impl<'a> From<HashMap<&'a str, &'a str>> for RequestParameters<'a> {
fn from(map: HashMap<&'a str, &'a str>) -> RequestParameters<'a> {
RequestParameters { map: map }
}
}
impl<'a> Into<Body<'a>> for RequestParameters<'a> {
fn into(self) -> Body<'a> {
let string = String::from("?") +
&self.map
.iter()
.map(|entry| format!("&{}={}", entry.0, entry.1))
.collect::<String>()[1..];
(&string).into()
}
}
fn main() {
let mut parameters = HashMap::new();
parameters.insert("a", "b");
let client = Client::new();
client.post("https://google.com")
.body(RequestParameters::from(parameters));
}