获得徽章 7
- Rust 每日一题:
假设我们有以下 Rust 代码:
use std::sync::{Arc, Mutex, Condvar};
let pair = Arc::new((Mutex::new(false), Condvar::new()));
let pair_ref = &pair;
考虑以下关于如何正确克隆 pair_ref 的陈述。哪个是正确的?
A) let cloned_pair = Arc::clone(pair_ref); 将不会编译通过,因为 pair_ref 是 &&Arc<T> 类型。
B) let cloned_pair = Arc::clone(pair_ref); 是有效的,因为 pair_ref 是 &Arc<T> 类型。
C) 必须使用 let cloned_pair = Arc::clone(&*pair_ref); 来克隆 pair_ref。
D) 无法克隆 pair_ref,因为它是一个引用。展开等人赞过评论6 - Rust每日一题:
分析下面的 Rust 代码片段,并指出其中涉及的高级特性和可能存在的问题。
struct Data<T> {
value: T,
}
impl<T> Data<T> {
fn new(value: T) -> Self {
Data { value }
}
fn get_ref(&self) -> &T {
&self.value
}
fn set_value(&mut self, value: T) {
self.value = value;
}
}
fn main() {
let mut data = Data::new(String::from("Hello"));
let r = data.get_ref();
data.set_value(String::from("World"));
println!("{}", r);
}展开等人赞过18 - Rust每日一题:
Rust每日一题:
分析下面的 Rust 代码片段,并指出其中涉及的高级特性和可能存在的问题。答案在评论区
fn modify_vec(vec: &mut Vec<i32>) {
let first = vec.first_mut().unwrap();
vec.push(100);
*first *= 2;
}
fn main() {
let mut numbers = vec![1, 2, 3];
modify_vec(&mut numbers);
println!("{:?}", numbers);
}展开1点赞
![[打脸]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_82.c6f2aee.png)