问题描述
struct A
{
std::string a;
A( std::string a ) : a( std::move(a) ){ } \\ a is not passed by reference
};
令我困惑的是,似乎a
没有被引用传递,因此制作了a
的副本。如果是这样,这样做std::move
毫无意义。但是,许多专家似乎都这样做,因此背后必须有原因。你能解释为什么吗?
解决方法
它避免了第二次复制。否则,从传递给函数的use tokio; // 0.2.23
#[tokio::main]
async fn main() {
let (_,_) = tokio::join!(start_server_listener(),start_job_processor());
}
构造本地std::string
将是第二个副本。