我想调用.map()一系列枚举:
enum Foo {
Value(i32),
Nothing,
}
fn main() {
let bar = [1, 2, 3];
let foos = bar.iter().map(|x| Foo::Value(*x)).collect::<[Foo; 3]>();
}
Run Code Online (Sandbox Code Playgroud)
但编译器抱怨:
error[E0277]: the trait bound `[Foo; 3]: std::iter::FromIterator<Foo>` is not satisfied
--> src/main.rs:8:51
|
8 | let foos = bar.iter().map(|x| Foo::Value(*x)).collect::<[Foo; 3]>();
| ^^^^^^^ a collection of type `[Foo; 3]` cannot be built from an iterator over elements of type `Foo`
|
= help: the trait `std::iter::FromIterator<Foo>` is not implemented for `[Foo; 3]`
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
Elm支持[1..100],但是如果我尝试['a'..'z'],编译器会给我一个类型不匹配(期望一个数字,得到一个Char).有没有办法让这项工作?
我以这种方式构建了一个类似于Capistrano的小部署脚本,它将Rails应用程序检出到一个带时间戳的目录,并current在一切顺利时设置链接.问题是,在触摸tmp/restart.txt时,没有任何反应,我想知道它是否与之后在时间戳目录中启动的Passenger Standalone有关cd /path/to/app/current.因此,如果我更新当前链接,乘客不会看到该链接的新目标目录中发生的事情,但保留在旧目标目录中,认为生活是美好的.
这些假设是否正确,如果是,我该怎么办?如果没有,我该怎么办?
我有一个继承自的类Hash.当这个类本身被继承时,我想知道initialize方法中继承类的类名.当我打电话给self我时{},不知道该name方法.
class Foo < Hash
def initialize
# Here i want to know that the class is Foo
end
end
Run Code Online (Sandbox Code Playgroud)
我如何获得课程名称?
我正在使用newtype,包装整数数组:
struct Foo([int, ..5]);
Run Code Online (Sandbox Code Playgroud)
显然,因为我不能简单地这样做:
let foo = Foo([1,2,3,4,5]);
let bar = foo[2];
Run Code Online (Sandbox Code Playgroud)
我访问包装数组的准确程度如何?
我正在实施Go in Haskell游戏.我有一个类型Point,指定网格上的一个点:
data Point = Point (Int, Int)
Run Code Online (Sandbox Code Playgroud)
我有另一种类型,代表一种游戏.它包含的其他内容moves,基本上是Points 的列表.现在我需要扩展移动的定义还包括玩家通过的可能性,所以我尝试了这个:
data Move = Pass | Point (Int, Int)
Run Code Online (Sandbox Code Playgroud)
可以理解的是,编译器并不喜欢这样,它抱怨道Multiple declarations of ‘Point’.但是,仅定义Point中Move也似乎不对,因为我并不专门用于Point移动的上下文中.能够通过这些地方会很奇怪.
我可以在这里使用Maybe,但我想比这更具体.我怎么做?
我想从一个非常大的字符串的开头剪切一些字符.为了节省一些内存和时间,我想避免复制它,但只是让字符串从后面的索引开始,就像在C中通过递增指向字符串(数组)的指针一样容易实现.
那可能吗?