我觉得很奇怪,Iterator::take_while它取得了迭代器的所有权.这似乎是一个有用的功能,能够获取满足某些功能但仍保留原始迭代器中其余元素的前x个元素.
我知道这与懒惰的实现不兼容take_while,但仍然感觉很有用.这只是被认为不足以包含在标准库中,还是还有其他一些我没有看到的问题?
我是 Rust 的新手,我有一个关于借用其参数的函数的问题。
在 C++ 中,函数的类型签名单独指定是否通过引用获取参数;调用该函数的代码不需要明确表明它正在传递一个引用。举个例子:
// The function signature indicates x should be passed by reference.
void increment(int& x) {
++x;
}
void main() {
int y = 0;
increment(y); // y is implicitly passed by reference
// y is now 1
}
Run Code Online (Sandbox Code Playgroud)
另一方面,Rust 似乎不允许这样做。以下代码将无法编译:
fn output(x: &isize) {
println!("{}", x);
}
fn main() {
let y: isize = 0;
output(y); // Error.
// output(&y); <- this is ok though
}
Run Code Online (Sandbox Code Playgroud)
使用方法语法 through 时,如果函数签名采用&self或&mut self则这些借用发生而调用方不使用 …
榆树有一个产生底部/发散的表达式,比如Haskell error或Rust's unimplemented!()吗?
例如
map : (a -> b) -> List a -> List b
map = unimplemented
Run Code Online (Sandbox Code Playgroud) 有没有办法将Elm表达式转换为其代码的字符串表示形式?
例如
sourceString : a -> String
sourceString (1 + 3) == "(1 + 3)"
Run Code Online (Sandbox Code Playgroud)
我没有听说过榆树的宏,但也许仍然有办法做到这一点?