我有一个围绕数组的新类型包装器。我假设我可以使用size_of
而不是手动传递数组的大小,但编译器认为我错了。
use std::mem::{size_of, size_of_val};
#[repr(C, packed)]
struct BluetoothAddress([u8, ..6]);
fn main() {
const SIZE: uint = size_of::<BluetoothAddress>();
let bytes = [0u8, ..SIZE];
println!("{} bytes", size_of_val(&bytes));
}
(游戏围栏链接)
我正在使用每晚:rustc 0.13.0-nightly (7e43f419c 2014-11-15 13:22:24 +0000)
此代码失败并出现以下错误:
broken.rs:9:25: 9:29 error: expected constant integer for repeat count, found variable
broken.rs:9 let bytes = [0u8, ..SIZE];
^~~~
error: aborting due to previous error
Rust Reference on Array Expressions让我认为这应该可行:
在
[expr ',' ".." expr]
表单中,后面的表达式".."
必须是可以在编译时求值的常量表达式,例如字面量或静态项。