小编fev*_*nym的帖子

如何写入Rust中的内存映射地址?

我正在尝试为Rust中的STM32F1xx制作"Blinky".我知道它有libs,但是我想创建自己的"lib"用于学习目的.

我可以通过C中的地址访问STM32的"寄存器":

*(uint32_t*)(0x40021000 + 0x018) |= 0x10;
*(uint32_t*)(0x40011000 + 0x004) |= 0x33;
*(uint32_t*)(0x40011000 + 0x004) &= ~0xCC;
*(uint32_t*)(0x40011000 + 0x10) |= 0x300;

while(1) {}
Run Code Online (Sandbox Code Playgroud)

这会将一些位写入RCC_APB2ENR寄存器以启用端口C的时钟,配置引脚并启用Discovery上的LED.

我需要在Rust中重写它,以制作consts,fns并开始编写漂亮的Rusty代码.在没有FFI调用C代码的情况下Rust是否可能?我能用asm!宏来实现吗?

embedded rust

10
推荐指数
2
解决办法
1264
查看次数

在 Pandas 中减少(折叠)

Pandas DataFrame 是否有任何减少/折叠实现?例如,我想获得一个名为列数之和cost在数据帧df,使用类似lambda acc, x,这里x是一个数据帧一行。

我该怎么办?

PS 我知道 .sum(),但还有许多其他可能的\acc,x -> ...功能。

python pandas

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

在 Rust 未来的特征绑定中,“静态生命周期”意味着什么?

我以为我已经得到了一生'static,但现在我不确定了。

我正在尝试了解如何与 Tokio 和 Futures 合作。我的应用程序正在运行,但结构很糟糕,所以我需要分解它。这是'static我关闭的要求,我不知道如何解决。

例如,在一个main函数中,我有一个句柄并且能够spawn对其循环​​进行 future 操作:

let mut core = tokio_core::reactor::Core::new().unwrap();
let handle = core.handle();
let future = {
    ok(())
};
Run Code Online (Sandbox Code Playgroud)

它编译;现在我想移出一些逻辑:

struct Test;
impl Test {
    fn test(&self, handle: tokio_core::reactor::Handle) {
        let future = {
            ok(())
        };
        handle.spawn(future);
    }
}
Run Code Online (Sandbox Code Playgroud)

它也能编译。当我的结构变得更加复杂时:

struct Test<'a> {
    api: &'a Arc<Api>,
}

impl<'a> Test<'a> {
    fn new(api: &'a Arc<Api>) -> Self {
        Test {
            api: api,
        }
    }

    fn test(&self, msg: &telegram_bot::types::Message, …
Run Code Online (Sandbox Code Playgroud)

lifetime rust rust-tokio

5
推荐指数
0
解决办法
4904
查看次数

Clojure:IO的future,agent或core.async

假设有4个组成部分:

  1. 通过http进行交互式数据收集(调查
  2. 原子,积累了调查阶段
  3. 大量计算
  4. 数据库作者

我尽量做到最后两个操作是asyncronous,像放置在队列中积累的数据的地方,并开始收集等调查,同时事情处理数据和别的东西做IO与任何先前准备的数据。

问题是使用语言的什么功能?在《Clojure编程》一书中,有使用代理作为执行IO操作的组件的示例,但是期货不提供相同的“即发即弃”功能吗?还是代理仍然是原子或引用之类的身份,而根本不是演员?

concurrency clojure

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

标签 统计

rust ×2

clojure ×1

concurrency ×1

embedded ×1

lifetime ×1

pandas ×1

python ×1

rust-tokio ×1