小编geo*_*tle的帖子

具有 Box 字段并隐含异步特征的 Rust 结构

我遇到了具有 Box 字段并隐含异步特征的结构的问题。具体来说

error: future cannot be sent between threads safely
Run Code Online (Sandbox Code Playgroud)

看起来发生错误是因为我在 impl 是异步特征的结构中使用了 Box 字段。

以下是我想要完成的任务和遇到的问题的一个最小示例。你可以在这里找到它的游乐场。

error: future cannot be sent between threads safely
Run Code Online (Sandbox Code Playgroud)

首先,我该如何解决这个问题?

其次,我本质上是在尝试为结构编写特征,以便实现的结构可以轻松地与其他结构交换,类似于我在 Java 中为对象编写接口的方式。我意识到这可能不是我应该考虑 Rust 组件设计的方式,但我是一个初学者,不确定什么是基于特征的设计的正确方法。如果这不是惯用的 Rust,您将如何重新设计它,以便它仍然实现设计目标(在堆栈上下创建和使用特征以允许轻松的 impl 交换)?

谢谢。

oop traits rust async-await trait-objects

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

Nextjs动态函数导入(不是组件)

我正在使用 nextjs 应用程序。我想动态导入一个依赖于作为组件提供的路径的函数。今天,我使用函数的映射id,并使用路径中提供的 id 来检索该函数并在我的组件中使用它。然而,我怀疑这是否利用了代码分割。

这是一个说明我的观点的最小示例。不过,想象一下,这些函数并不像这里详细介绍的那么简单——想象一下,函数有很多,而且每个都很大,因此我们最好只发送渲染给客户端所需的函数。也就是说,在示例情况下,仅addalgoId路径中的 是add(并且其他 id 相同)时才发送。

import { FunctionComponent, ReactElement, useState } from "react";
import { GetStaticPaths, GetStaticPathsResult, GetStaticProps, GetStaticPropsResult } from "next";
import { ParsedUrlQuery } from "querystring";
import * as React from "react";

type MyAlgo = (a: number, b: number) => number;
const add: MyAlgo = (a: number, b: number): number => a + b;
const multiply: MyAlgo = (a: number, b: number): number => a * …
Run Code Online (Sandbox Code Playgroud)

import dynamic typescript reactjs next.js

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

Rustlang:在宏中添加 return 语句

我正在学习 rustlings 课程,以便学习 rustlang,并且正在做测验 4。以下是我找到的解决方案。

macro_rules! my_macro {
    ($val:expr) => {
       format!("Hello {}", $val)
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_my_macro_world() {
        assert_eq!(my_macro!("world!"), "Hello world!");
    }

    #[test]
    fn test_my_macro_goodbye() {
        assert_eq!(my_macro!("goodbye!"), "Hello goodbye!");
    }
}
Run Code Online (Sandbox Code Playgroud)

但在此之前,我尝试了以下方法但没有成功:

macro_rules! my_macro {
    ($val:expr) => {
       return format!("Hello {}", $val)
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_my_macro_world() {
        assert_eq!(my_macro!("world!"), "Hello world!");
    }

    #[test]
    fn test_my_macro_goodbye() {
        assert_eq!(my_macro!("goodbye!"), "Hello goodbye!");
    }
}
Run Code Online (Sandbox Code Playgroud)

这个无效解决方案的唯一区别是关键字return。在这种情况下,编译器会输出完整的错误和警告列表。

为什么这是不正确的?Rust 宏中不允许使用 …

macros return rust rust-macros

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

Java 中的自定义 ZoneIds/时区

我正在尝试VTIMEZONE使用 JavaZoneIdZoneOffsetTransitionRule.

我的VTIMEZONE对象看起来像

BEGIN:VTIMEZONE
TZID:Central European Standard Time
BEGIN:STANDARD
DTSTART:16010101T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=1;BYDAY=MO
END:DAYLIGHT
END:VTIMEZONE
Run Code Online (Sandbox Code Playgroud)

我需要创建自己ZoneId的模型来对此进行建模,因为据我所知,ZoneId这些偏移量不可用,并且 DST 开始于 1 月的第一个星期一(而不是 3 月的某个星期日)。

我有以下创建一个 ZoneOffsetTransitionRule

ZoneOffsetTransitionRule of =
  ZoneOffsetTransitionRule.of(Month.JANUARY, 1, DayOfWeek.MONDAY, LocalTime.of(2, 0),
    false, ZoneOffsetTransitionRule.TimeDefinition.STANDARD, ZoneOffset.ofHours(1),
    ZoneOffset.ofHours(1), ZoneOffset.ofHours(2));
Run Code Online (Sandbox Code Playgroud)

但我不确定它是否正确或如何从中创建一个ZoneId

  • 该转换规则是否准确地模拟了DAYLIGHTmy的组件VTIMEZONE
  • 我怎样才能ZoneId从这个创建一个这样我最终可以创建一个ZonedDateTime

java time icalendar timezone

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

Python:二进制字符串的布尔列表

在python中将布尔列表转换为二进制字符串的最快方法是什么?

例如boolList2BinString([True,True,False])='0b110'.

另外,我如何将二进制字符串转换为二进制文字?这会花费更多的时间,而不仅仅是从布尔列表转换为二进制文字immediatley吗?怎么会这样做?

例如boolList2Bin([True,True,False])= 0b110.

谢谢!

python binary boolean list

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