如何在dart FFI中使用布尔类型?

如何在dart FFI中使用布尔类型?,dart,rust,Dart,Rust,我想用带锈的飞镖。但我找不到任何关于如何在FFI中使用c兼容布尔值的提及/文档/示例。甚至Dart官方文档中的例子也没有提到布尔人。在外国金融机构中不可能使用布尔语吗?如果不支持,我如何才能正确地使用它们?我刚刚发现,Dart的FFI库还不支持布尔类型(或者它们不支持,我不确定)。 但由于Rust的bool类型与C的bool 飞镖 typedef some_function=ffi.Int32 function() 要将其转换为bool,我必须使用1进行位掩码,以便仅获取第一位,然后查看它是否等

我想用带锈的飞镖。但我找不到任何关于如何在FFI中使用c兼容布尔值的提及/文档/示例。甚至Dart官方文档中的例子也没有提到布尔人。在外国金融机构中不可能使用布尔语吗?如果不支持,我如何才能正确地使用它们?

我刚刚发现,Dart的FFI库还不支持布尔类型(或者它们不支持,我不确定)。 但由于Rust的
bool
类型与C的bool,并在Dart中使用
Int32
作为FFI类型

0将变为false,而1将变为true。我认为这与将i32转换为Rust中的bool的结果相同

实施,

pub extern“C”fn某些函数(arg:bool){
和Dart中的类型定义

typedef some_function=ffi.Void function(ffi.Int32);

只是为了补充已接受的答案(目前还不能评论),尽管它通过将
bool
值转换为
int
来工作,但在我的案例中,另一种方式会导致问题

pub extern“C”fn some_function()->bool

飞镖

typedef some_function=ffi.Int32 function()

要将其转换为
bool
,我必须使用
1
进行位掩码,以便仅获取第一位,然后查看它是否等于零

我不确定我是否读取了无效内存,或者它之前是否没有被清除

在Dart 2.10.4中观察到