小编盛安安*_*盛安安的帖子

如何使用`cfg`和Cargo进行条件编译?

我想cfg用Cargo 有条件地编译我的源代码,在谷歌搜索一段时间后,似乎解决方案是使用cargo --features.

http://doc.crates.io/manifest.html

我尝试添加一些

#[cfg(feature = "foo")]
Run Code Online (Sandbox Code Playgroud)

在源代码和

cargo build --features foo
Run Code Online (Sandbox Code Playgroud)

,但它说

Package `xxx v0.0.1 (file:///C:/yyy/xxx)` does not have these features: `foo`
Run Code Online (Sandbox Code Playgroud)

我怎样才能让货物识别出这些特征?我必须添加一些东西Cargo.toml吗?

这里的版本rustccargo我使用:

C:\>rustc --version
rustc 0.13.0-nightly (42deaa5e4 2014-12-16 17:51:23 +0000)

C:\>cargo --version
cargo 0.0.1-pre-nightly (5af754d 2014-12-18 01:50:48 +0000)
Run Code Online (Sandbox Code Playgroud)

rust rust-cargo

20
推荐指数
3
解决办法
9732
查看次数

Agda中有哪些大小的类型?

Agda中有哪些大小的类型?我试图阅读有关MiniAgda的文章,但由于以下几点未能继续:

  1. 为什么数据类型超出其大小?据我所知,大小是感应树的深度.
  2. 为什么数据类型在其大小上是协变的,即i <= j - > T_i <= T_j?
  3. 这些>#模式意味着什么?

types type-systems agda induction totality

11
推荐指数
1
解决办法
605
查看次数

有没有办法解决未使用的类型参数?

码:

trait Trait<T> {}

struct Struct<U>;

impl<T, U: Trait<T>> Struct<U> {}
Run Code Online (Sandbox Code Playgroud)

错误:

error[E0207]: the type parameter `T` is not constrained by the impl trait, self type, or predicates
 --> src/main.rs:5:6
  |
5 | impl<T, U: Trait<T>> Struct<U> {}
  |      ^ unconstrained type parameter
Run Code Online (Sandbox Code Playgroud)

似乎RFC 447禁止这种模式; 有没有办法解决这个问题?我认为可以通过更改T为关联类型来解决,但这会阻止我执行multidispatch.

traits type-parameter rust

7
推荐指数
1
解决办法
1018
查看次数

什么是累积宇宙和`*:*`?

在阿格达,有Set n.据我所知,Set n将Haskell风格的值类型类层次结构扩展到无限级别.也就是说,Set 0是正常类型Set 1的宇宙,是正常类型的宇宙,是正常类型的宇宙Set 2,等等.

相比之下,伊德里斯拥有所谓的"累积的宇宙层次".似乎for a < b,Type a: Type b和Universe级别是推断的.但它在现实世界的节目中意味着什么?我们不能定义只能在更高但不是更低的宇宙上运行的东西吗?

顺便说一句,我知道它在逻辑上是不一致的,但是* : *与上述一致的解决方案相比有什么?

type-systems functional-programming agda dependent-type idris

7
推荐指数
1
解决办法
1013
查看次数

实现仿射类型系统

在仿射类型系统中,资源最多可以使用一次。

从 Hindley-Milner 类型系统开始,似乎强制关联的一种简单方法是在使用变量的类型规则时简单地从当前类型上下文中删除变量(如LinearML 上的这些幻灯片建议,第 15 页)。

这就是加强亲和力的全部内容吗?或者还有什么更复杂的事情要做?

type-systems hindley-milner linear-types

6
推荐指数
0
解决办法
212
查看次数

运行“cargo test”时记录日志

#[macro_use]
extern crate log;

fn whatever() {
    info!("whatever")
}

#[test]
fn test() {
    whatever();
}
Run Code Online (Sandbox Code Playgroud)

我想在运行单元测试()后查看日志,现在cargo test怎么可能?

testing logging unit-testing rust rust-cargo

5
推荐指数
1
解决办法
2636
查看次数

伊德里斯的“BorrowedType”背后的意图是什么?

在 idris 中,有一个称为UniqueType类型值的宇宙,其中只能使用一次。据我所知,它可以用来编写高性能代码。但是一个值只能使用一次的事实通常太有限了,所以有一种方法可以借用一个值而不是消费它:

data Borrowed : UniqueType -> BorrowedType where ...
Run Code Online (Sandbox Code Playgroud)

Borrowed数据类型被定义为在以上伊德里斯。为什么它不简单地返回Type而是引入另一个类型的宇宙 ( BorrowedType)?

linear-types idris uniqueness-typing

5
推荐指数
1
解决办法
524
查看次数

理解`k:Nat**5*k = n`签名

以下函数编译:

onlyModByFive : (n : Nat) -> (k : Nat ** 5 * k = n) -> Nat
onlyModByFive n k = 100
Run Code Online (Sandbox Code Playgroud)

k它的Nat ** 5 * k = n语法代表什么呢?

另外,我怎么称呼它?这是我尝试过的,但我不理解输出.

*Test> onlyModByFive 5 5
When checking an application of function Main.onlyModByFive:
        (k : Nat ** plus k (plus k (plus k (plus k (plus k 0)))) = 5) is not a
        numeric type
Run Code Online (Sandbox Code Playgroud)

答案来源 - https://groups.google.com/d/msg/idris-lang/ZPi9wCd95FY/eo3tRijGAAAJ

existential-type dependent-type idris

2
推荐指数
1
解决办法
106
查看次数

1
推荐指数
1
解决办法
85
查看次数