如何将变量存储在字符串中?我已经阅读了这些示例,但它们都只是println!()
。
//javascript
var url_str = "http://api.weather/city" + city_code + "/get";
//go
urlStr := fmt.Sprintf("http://api.weather/%s/get", cityCode)
// Edit: Rust
let url_str = format!("http://api.openweathermap.org/data/2.5/weather?q={}", city_code);
我正在使用tx.send()
并希望在频道上发送内插字符串,如下所示:
let url_str = "http://api.weather";
c.send(url_str);
但是我收到了错误
src/http_get/http_getter.rs:21:17: 21:24 error: `url_str` does not live long enough
src/http_get/http_getter.rs:21 c.send(&url_str);
^~~~~~~
以下是我尝试实现的用于构建URL的函数:
pub fn construct_url(c: &Sender<String>, city_code: &str) {
let url_str = format!("http://api.openweathermap.org/data/2.5/weather?q={}", city_code);
println!("{}", url_str);
c.send(url_str);
}
答案 0 :(得分:3)
随着生命周期和类型的恢复,这就是你所拥有的:
pub fn construct_url<'a, 'b, 'c>(c: &'a Sender<&'b str>, city_code: &'c str) {
let url_str: String = format!("http://api.openweathermap.org/data/2.5/weather?q={}", city_code);
println!("{}", url_str);
c.send(&url_str);
}
请记住String
和&str
之间的区别:&str
是一个字符串切片,是对其他人拥有的字符串的引用; String
是拥有的品种。
'b
必须至少与整个函数体一样长 - 你在函数内构造的任何字符串都不会长到'b
。因此,您的发件人需要发送String
,而不是&str
。
pub fn construct_url(c: &Sender<String>, city_code: &str) {
let url_str = format!("http://api.openweathermap.org/data/2.5/weather?q={}", city_code);
println!("{}", url_str);
c.send(url_str);
}