我用Rust编写了一个is_prime函数,我的印象是简单地编写true相当于return true;,但在我的函数中不是这样的:
fn is_prime(number: i64) -> bool {
for i in 2i64..number {
if number % i == 0 && i != number {
false
}
}
true
}
这将给我一个错误:
error[E0308]: mismatched types
--> src/lib.rs:4:13
|
4
我正在尝试创建一个函数,它将返回一个目录中所有文件的迭代器,包括子目录中的所有文件。由于我不知道包含所有文件路径的数组的大小,所以我认为函数返回迭代器而不是数组会更容易。在Python中这样做很简单:
def func():
for i in range(0, 100):
yield i
for i in func():
print(i)
但是,当我试图在Rust中做类似的事情时,我会遇到编译器错误和/或编译器恐慌。在这里,我尝试了一些基本语法,这些语法与Python中的基本语法非常接近:
fn func() -> Iterator {
for
假设我有一个分配了缓冲区uint8_t*的C++,并且我想从Rust访问它: 一种方法是使用C++函数: uint8_t receive(uint8_t** data, size_t* size) {
//allocates the data, writes to it and then points *data to it
return 0;//on success
} 然而,这使得Rust负责解除数据的定位。相同的 uint8_t* receive(size_t* size) {
uit8_t* data = //allocates data
*size
在以下情况下,我试图了解锈菌的混叠规则:
让我们假设C中有一个内存分配,我们将指向这个分配的指针传递给Rust。Rust函数对分配做一些事情,然后调用C代码(没有任何参数),在C代码中调用另一个铁锈函数,与参数的分配相同。现在,让我们假设只有第一个Rust函数才能得到一个可变的引用。
调用堆栈如下所示:
Some C Code (owns data)
Rust(pointer as &mut)
Some C code (does not get parameters from Rust)
Rust(pointer as &)
作为一个简短的例子,让我们假
请参考下面的代码,以获得已注释掉的行。它不能由Rust编译器编译,这意味着我们需要显式地为Rust中的原始指针指定像*const i32这样的常数。但是对于对其切入点不可变的引用,我们不需要使用原始指针显式地指定常数。那么,为什么Rust不使用一种更对称的方式来表达引用和原始指针的相同意义,因为引用实际上是遮罩下的指针?
fn main() {
let x1: &i32;
let x2: &mut i32;
// let p1: *i32; // This line doesn't compile!!!
let p1: *const i
我试图编写一个库,它必须打开文件,并且我想处理std::fs::File::create使用的std::fs::File::create类型。考虑到这个包装器函数,我不知道如何匹配返回结果:
use std::fs::File;
use std::path::Path;
use std::fs::File;
use std::path::Path;
pub fn allocate(path:& str) -> File{
let mut file = File::create(Path::new(path));
}
然后调用:
mod whisper;
use std::i
给定的
var stuffs = [
{ id : 1, name : "orange"},
{ id : 2, name : "apple"},
{ id : 0, name:"grapes"}
];
var filterMethod1 = new function(o){return (o.id>=1);}; // this gives undefined error for o
function filterMethod2(o) {return (o.id>=1);};
为什么匿名函数不适用于数组fil