小编DeB*_*eBe的帖子

使用box关键字和Box :: new有什么区别?

是否box只是语法糖还是可以应用到地方使用的情况下Box::new是不够的?我读到某个box不稳定的地方,这是否意味着我只能将它与夜间Rust版本一起使用?

heap rust

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

为什么有必要对一行中的可变原始指针执行两次转换?

在查看时unix-socket,我遇到了这段代码:

let timeout = unsafe {
    let mut timeout: libc::timeval = mem::zeroed();
    let mut size = mem::size_of::<libc::timeval>() as libc::socklen_t;
    try!(cvt(libc::getsockopt(self.0,
                              libc::SOL_SOCKET,
                              kind,
                              &mut timeout as *mut _ as *mut _,
                              &mut size as *mut _ as *mut _)));
    timeout
};
Run Code Online (Sandbox Code Playgroud)

我特别好奇这些线条:

&mut timeout as *mut _ as *mut _,
&mut size as *mut _ as *mut _
Run Code Online (Sandbox Code Playgroud)

为什么有必要对一行中的可变原始指针执行两次转换?为什么仅仅施放一次就不够了?

pointers casting rust

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

连续执行不同的完成项

我目前正在尝试使用Java中的反应式扩展来实现特定的结果,但是我无法做到这一点,也许你们中的某人可以帮助我。

firstCompletable
  .onErrorComplete(t -> specificErrorHandlingOne())
  .andThen(secondCompletable())
  .onErrorComplete(t -> specificErrorHandlingTwo())
  .andThen(thirdCompletable())
  .onErrorComplete(t -> specificErrorHandlingThree())
  .andThen(fourthCompletable())
  .onErrorComplete(t -> specificErrorHandlingFour())
  .subscribe(viewCallback::showSuccess)
Run Code Online (Sandbox Code Playgroud)

但是,例如在secondCompletable中存在错误时,将执行特定的错误处理,但随后仍在计划其他Completable。我希望如果其中一个Completables失败,整个Completables链将停止执行。我该怎么做?

我已经尝试过使用doOnError代替,但这只是在没有抛出特定错误的堆栈跟踪中结束。

rx-java reactivex

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

标签 统计

rust ×2

casting ×1

heap ×1

pointers ×1

reactivex ×1

rx-java ×1