在文档中,代码片段中有一条注释,内容是:
// 如果
ssr
和csr
都是false
,则不会渲染任何内容!
“什么都不会渲染”是什么意思?我的理解是,ssr 决定页面是否可以从服务器端渲染,而 csr 决定页面是否涉及 JavaScript(因此是交互式的)。当我同时禁用 ssr 和 csr 时,我认为我仍然会得到一个静态页面,而不是空白页或白屏。我的理解正确吗?
如果我是对的,那么“什么都不会被渲染”是什么意思?因为我仍然得到了一个渲染页面。如果我错了,请指出我误解了什么?
我使用 Rust 一段时间了,几乎从未见过任何带有#[repr(C)]
. #[repr(C)]
但是,我在 Solana 程序库中看到了很多(例如,这里是spl-token
程序源代码)。
在阅读 Rust Reference 的“类型布局”一章(尤其是“Rust
表示”部分)后,我仍然对 Rust 究竟如何进行数据布局感到困惑。医生说:
这种表示形式所做的唯一数据布局保证是健全性所需的数据布局。他们是:
- 这些字段已正确对齐。
- 这些字段不重叠。
- 类型的对齐方式至少是其字段的最大对齐方式。
似乎C
代表也满足这些保证。但C
表征被详细描述,而Rust
表征却没有。所以我不太明白这两种表示之间的区别。Rust 编译器是否会进行一些复杂的优化,例如修改我的原始结构定义以使其节省空间?由于优化太复杂,文档只是省略了细节?
我的正式问题是:
#[repr(C)]
为什么有人在开发“普通”Rust 程序时会使用它?我所说的“正常”是指该程序不涉及互操作,也不涉及交叉编译(到另一个目标,如 Solana)。#[repr(C)]
结构体和枚举?