小编Cra*_*aig的帖子

无法理解 &mut &mut 参考

我正在学习教程,但无法理解以下代码:

mail_account.serialize(&mut &mut account.data.borrow_mut()[..])?;
Run Code Online (Sandbox Code Playgroud)

其中mail_account是一个结构体,是从Borsh Serialize.serialize()派生的方法。

另一件需要注意的事情是,它account是来自 solana_program 箱的AccountInfodata结构,其类型为:Rc<RefCell<&'a mut [u8]>>

作者对代码的解释如下:

您可能会注意到这个棘手的&mut &mut account.data.borrow_mut()[..]表达方式。该serialize()方法将对可变切片的引用作为u8参数,该borrow_mut()方法返回一个RefMut. 我们无法传递RefMut给需要切片的方法,因此我们采用一个可变切片,其中RefMut返回一个可变切片u8

我所理解的是,我们想要将当前mail_account结构写入account.data,这就是我们借用对 的可变引用的原因account.data。我不明白的是为什么添加 很重要[..]serialize()我认为这与期待切片有关。

我也无法理解添加&mut &mut到如何account.data.borrow_mut()[..]创建u8. 这是如何转换成的u8?对我来说,它似乎只是向原始引用添加了额外的可变引用。(类型如何从 变为RefMut&[u32]

rust

13
推荐指数
1
解决办法
3392
查看次数

在新的c程序中使用我的链表代码

事先道歉,因为这似乎是非常基本的.

我有我的链表文件linkedList.c,我想将它包含在我的新c文件中,这样我就不必再对整个链表进行编码了.在Java中,我只需将它放在同一个文件夹中,然后我就可以在新文件中创建类LinkedList的对象,但是C似乎不会以这种方式工作.如果我尝试使用

#include "linkedLIst.c" 
Run Code Online (Sandbox Code Playgroud)

在我的新文件的开头然后我收到错误,因为main已经与我的布尔变量一起被定义了两次.我究竟该如何解决这个问题?

c

1
推荐指数
1
解决办法
83
查看次数

标签 统计

c ×1

rust ×1