Solana 60 天课程

2025年02月27日更新 66 人订阅
原价: ¥ 28 限时优惠
专栏简介 开始 Solana - 安装与故障排除 Solana 和 Rust 中的算术与基本类型 Solana Anchor 程序 IDL Solana中的Require、Revert和自定义错误 Solana程序是可升级的,并且没有构造函数 Solidity开发者的Rust基础 Rust不寻常的语法 Rust 函数式过程宏 Rust 结构体与属性式和自定义派生宏 Rust 和 Solana 中的可见性与“继承” Solana时钟及其他“区块”变量 Solana 系统变量详解 Solana 日志、“事件”与交易历史 Tx.origin、msg.sender 和 onlyOwner 在 Solana 中:识别调用者 Solana 计算单元与交易费用介绍 在 Solana 和 Anchor 中初始化账户 Solana 计数器教程:在账户中读写数据 使用 Solana web3 js 和 Anchor 读取账户数据 在Solana中创建“映射”和“嵌套映射” Solana中的存储成本、最大存储容量和账户调整 在 Solana 中读取账户余额的 Anchor 方法:address(account).balance 功能修饰符(view、pure、payable)和回退函数在 Solana 中不存在的原因 在 Solana 上实现 SOL 转账及构建支付分配器 使用不同签名者修改账户 PDA(程序派生地址)与 Solana 中的密钥对账户 理解 Solana 中的账户所有权:从PDA中转移SOL Anchor 中的 Init if needed 与重初始化攻击 Solana 中的多重调用:批量交易与交易大小限制 Solana 中的所有者与权限 在Solana中删除和关闭账户与程序 在 Anchor 中:不同类型的账户 在链上读取另一个锚点程序账户数据 在 Anchor 中的跨程序调用(CPI)

Rust 函数式过程宏

  • RareSkills
  • 发布于 2024-02-17 10:37
  • 阅读 747

本教程详细解释了Rust中函数与函数式宏的区别,并通过代码示例展示了如何使用Rust的函数式宏来处理不同数量的参数。

Rust 函数式过程宏 本教程解释了函数与函数式宏之间的区别。例如,为什么 msg! 后面有一个感叹号?本教程将解释这种语法。作为一种强类型语言,Rust 不能接受函数的任意数量的参数。例如,Python 的 print 函数可以接受任意数量的参数:

print(1)
print(1, 2)
print(1, 2, 3)

! 表示“函数”是一个函数式宏。Rust 的函数式宏通过 ! 符号来标识,例如 Solana 中的 println!(...)msg!(...)。在 Rust 中,打印内容的常规函数(非函数式宏)是 std::io::stdout().write,它只接受一个字节字符串作为参数。如果你想运行以下代码,如果你不想设置开发环境,Rust Playground 是一个方便的工具。我们使用以下示例(取自这里):

use std::io::Write;

fn main() {
    std::io::stdout().write(b"Hello, world!
").unwrap();
}

请注意,write 是一个函数,而不是宏,因为它没有 !。如果你尝试像上面在 Python 中那样做,代码将无法编译,因为 write 只接受一个参数:

// 这段代码无法编译
use std::io::Write;

fn main() {
    std::io::stdout().write(b"1
").unwrap();
    std::io::stdout().write(b"1", b"2
").unwrap();
    std::io::stdout().write(b"1", b"2", b"3
").unwrap();
}

因此,如果你想打印任意数量的参数,**你需要为每种参数数量编写...

剩余50%的内容订阅专栏后可查看

  • 学分: 0
  • 分类: Rust
  • 标签:
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论