如何取消引用切片引用

how can i dereference a slice reference

提问人:vicky leu 提问时间:10/19/2023 更新时间:10/19/2023 访问量:46

问:

我需要取消引用切片,然后使用变量 a。

    let mut a: [i8; 10] = [42; 10];
    a[5] = 0;
    let mut s = &mut a[2..4];
    s[0] = 100;
    let mut aa = &mut *s;
    aa[1] = 23;
    let release = *aa;
    println!(" s:{:#?}   a:{:#?}",  s, a);

我收到有关未知大小的编译时错误

error[E0277]: the size for values of type `[i8]` cannot be known at compilation time
 let release = *aa;
   ^^^^^^^ doesn't have a size known at compile-time

取消引用切片引用

切片 取消引用

评论

2赞 Chayim Friedman 10/19/2023
你没有。你想完成什么?
0赞 vicky leu 10/19/2023
@ChayimFriedman只是靠,我找到了一个解决方案......让 _aa=aa.deref();让 _s=s.deref();打印!(“ s:{:#?}a:{:#?}“, s, a);似乎不能使用通配符取消引用切片。
0赞 Chayim Friedman 10/19/2023
deref()等效于您已经尝试过的 。&*
0赞 vicky leu 10/19/2023
@ChayimFriedman不起作用,让 _aa=&*aa;设 _s=&*s;让 _aa=aa.deref();让 _s=s.deref();打印!(“ s:{:#?}a:{:#?}“, s, a);此处出现“a”不可变借用
0赞 vicky leu 10/19/2023
啊,我现在明白了。我不能在同一行中使用“s”和“a”。我刚刚开始学习 Rust,很抱歉造成混乱。

答: 暂无答案