小编One*_*All的帖子

Rust - 如何从模块中公开结构?

这可能是一个非常愚蠢的问题,但我想知道是否可以从模块中公开类型。如果这听起来很模糊,我希望以下信息能够阐明我想要实现的目标。

假设我有以下文件结构:

Project
|-Units
| |-Length
| | |-Meter.rs
| | |-mod.rs
| |-mod.rs
|-main.rs
Run Code Online (Sandbox Code Playgroud)

Units/mod.rs 文件:

pub mod Length;
Run Code Online (Sandbox Code Playgroud)

单位/长度/mod.rs 文件:

pub mod Meter;
Run Code Online (Sandbox Code Playgroud)

单位/长度/Meter.rs 文件:

pub struct Meter
{
  someValue: f64
}

// some implementation here

Run Code Online (Sandbox Code Playgroud)

现在,当我想在 main 中使用 Meter 结构时,我似乎需要编写以下内容:

let someMeter = Units::Length::Meter::Meter::new(5.3);
Run Code Online (Sandbox Code Playgroud)

我想写的是

let someMeter = Units::Length::Meter::new(5.3);
Run Code Online (Sandbox Code Playgroud)

尽管我不确定应该在 mod.rs 文件中更改什么才能实现此目的。我真的不想更改文件夹结构,因为我喜欢它的组织方式。任何对我做错了什么的洞察将不胜感激。

我承认在此示例中我没有遵循 Rust 命名约定。

module rust

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

C# 异步时还需要支持同步调用

我遇到的情况是,我们有一些由用户输入(单击按钮)运行的代码,这些代码运行一系列函数调用并生成一些数据(这是一个非常繁重的操作,需要几分钟)。我们想为此使用 Async 以便在我们执行此操作时它不会锁定 UI。

但同时我们也有一个要求,即这些功能也可以通过 API 使用,最好是同步的。

可视化/示例(伪代码):

public async void Button_Click() // from UI context
{
  await instanceOfClassA.FuncA();

  // some code
}

public async Task ClassA.FuncA()
{
  await instanceOfClassB.FuncB()

  // some code
}

public async Task ClassB.FuncB()
{
  await instanceOfClassC.SomeHeavyFunc()

  // some code
}

public async Task ClassC.SomeHeavyFunc()
{
  // some heavy calculations
}


// Also need to provide a public synchronous API function
public void SomeClass.SynchronousAPIFunc()
{
  // need to call differentInstanceOfClassB.FuncB()
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让公共 API 函数在内部等待异步操作?

编辑:在这篇文章中 …

.net c# async-await

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

标签 统计

.net ×1

async-await ×1

c# ×1

module ×1

rust ×1