对于一个结构成员,它可以用Rust计算,类似于C的offsetof。
虽然这适用于struct字段,但我找不到类似于枚举及其变体成员如何做到这一点的方法。
在IRC上与开发人员交谈时,不能保证枚举的所有成员都对齐:
如何计算枚举成员的偏移量?
对于实例,它可以像这样工作:
enum Test { A(u8), B(f64) };
fn test_me(a: Test) {
if let Test::A(b) = a {
// we could find the offset between 'a' and 'b' here.
如何从Rust std库导入和引用枚举类型?
我正在尝试使用来自std::sync::atomics模块的std::sync::atomics枚举。到目前为止,我的尝试都以失败告终:
use std::sync::atomics::AtomicBool;
use std::sync::atomics::Ordering;
// error unresolved import: there is no `Relaxed` in `std::sync::atomics::Ordering`
// use std::sync::atomics::Ordering::Relaxed;
fn m
我正在为我正在使用的一个库编写类型定义。库中的一个函数标识由整数单击的鼠标按钮:
//index.d.ts
export as namespace myLib;
// activates the library listening for a specific mouse button
function activate(button : number ) : void
我引入了一个枚举来使它更好:
//index.d.ts
export as namespace myLib;
export enum MouseButton {
LEFT = 1,
MIDDLE =
如果我有两个结构: struct A {...}
struct B {...} 我通过传递对A或B的引用来调用的泛型函数fn f<T>(param: T),在该函数中是否有如下所示的方法(伪代码): if param is A {
// do something with "param as A", like this:
let a: A = (A) param;
// ...
} 在Java、C#等语言中,我会简单地检查一个对象是否是A的实例,如果是,就像上面的例子一样将其强制转换为A。我怎么能在Rust中做这样的事情呢?我知道我可以在特
#[derive(Debug)]
struct Point {
x: i32,
y: i32,
}
impl Copy for Point {}
impl Clone for Point {
fn clone(&self) -> Point {
*self
}
}
当我只实现Copy时,Rust告诉我我需要实现Clone。当我只实现Clone时,Rust告诉我可以移动Point。
我的问题是,我从来没有实现过任何东西,这段代码有点像循环依赖,但它能工作吗?为什么?
我刚开始学习Rust,我想知道: Rust是解释器吗?使用解释器,Rust编译器不需要在每次调用时编译所有的源文件,只会在代码更改时解释代码。这就是为什么JavaScript和Python没有真正的编译时间。
Rust提供了增量编译,但在大型项目中仍然非常慢。这将是使用rust for the web IMO的GUI开发的福音。