![](/img/trans.png)
[英]Why doesn't a nested await point yield up to tokio::select
我想我缺少一些非常基本的東西。 我的期望是,當tick.tick()完成並啟動sleep循環時, tokio::time::sleep(...).await應該返回到 select 語句,讓longer_tick有機會完成。 但是一旦較短的滴答完成,它就會陷入睡眠循環,永遠不會退回到 select ...
[英]Why doesn't a nested await point yield up to tokio::select
我想我缺少一些非常基本的東西。 我的期望是,當tick.tick()完成並啟動sleep循環時, tokio::time::sleep(...).await應該返回到 select 語句,讓longer_tick有機會完成。 但是一旦較短的滴答完成,它就會陷入睡眠循環,永遠不會退回到 select ...
[英]Will `TcpStream` be disabled once it receives an invalid UTF-8?
我正在嘗試創建一個服務器,它通過 TCP 套接字通信從客戶端接收一個字符串,並將相同的字符串返回到相同的套接字。 我想要以下規格: 與客戶端重復通信(對應下面代碼中的loop塊) 當客戶端收到有效的 UTF-8 字符時,返回相同的字符( loop塊中的Ok分支) 當客戶端沒有收到有效的 UTF-8 ...
[英]How can I run asynchronous tasks on a single thread in order?
我正在開發一個使用 rust-tokio 進行異步執行的程序。 主 function 會定期調用 function 到 append 到 CSV 文件來記錄一段時間內的操作。 我想讓 CSV 創建 function 異步並將其作為單獨的任務運行,這樣我可以繼續主要的 function 如果 CSV ...
[英]In Rust+Tokio, should you return a oneshot::Receiver as a processing callback?
我正在制作一個 API,用戶可以在其中提交要處理的項目,他們可能想檢查他們的項目是否已成功處理。 我認為這是使用tokio::sync::oneshot頻道的好地方,我會將接收器返回給呼叫者,他們稍后可以等待它以獲得他們正在尋找的結果。let processable_item = ...; let ...
[英]Call a random function with variable arguments dynamically
我有一個帶有變量 arguments 的函數列表,我想在運行時隨機選擇其中一個,並在循環中調用它。 我希望提高我的解決方案的性能。 我有一個 function,它根據一些隨機性計算 arguments,然后(應該)返回一個 function 指針,然后我可以調用它。pub async fn cho ...
[英]Polling a context inside another poll
我有一個輪詢 function,它將永遠輪詢並始終掛起。 在輪詢 function poll_event_loop中,我想控制再次輪詢上下文的時間,並根據某些條件在x秒內再次調用 function。 我可以使用另一個調用waker.wake_by_ref function 的線程來做到這一點。但這感 ...
[英]How to find number of active tokio task?
我想獲得正在運行的 tokio 任務的數量。 在 python 中,我可以使用len(asyncio.all_tasks())返回當前運行循環的未完成任務。 我想知道 tokio 中的任何等價物。 這是一個示例代碼:use std::time::Duration; use tokio; // 1. ...
[英]Rust futures select in loop is not working as expected
我有一個接收 UDP 消息的循環,為了打破這個循環,我使用了一個通過select! 宏。 我希望在發送關閉事件 (Ctrl+C) 時打破循環。 但在收到第一條 UDP 消息后,它沒有按預期工作,沒有選擇關閉並且沒有中斷循環。 這是代碼,我將添加步驟以查看相同的問題。// [dependencies] ...
[英]Lifetime issues with rocket fairings, tokio-scheduler and crons
我目前正在 Rocket 上構建一個 API 引擎,正如現代應用程序所做的那樣,我想包含一個自動調度程序來在 Rocket API 運行時運行異步任務(又名 crons)。 我決定使用 Rocket fairings 在“升空”事件中啟用圍繞 tokio-schedule 構建的上述調度程序。 事實 ...
[英]Abortable: Dangling Futures?
我正在使用Abortable crate 來暫停 Future 的執行。 假設我有一個流產的未來,其中異步 function 本身正在等待其他異步函數。 我的問題是,如果我中止根 Future,子 Futures 會同時立即中止,還是會懸空? 我閱讀了Abortable的源代碼,特別是try_po ...
[英]Rust Axum Multipart Length Limit Exceeded
參考 Axum 文檔: docs.rs 大家好,我正在嘗試使用 HTML5 forms 和 Rust Axum創建一個簡單的文件上傳。 問題是,雖然任何普通文件都可以工作,但我要上傳的較大文件(尤其是視頻文件)太大了。 Axum(后來稱為Tokio )出現恐慌,因為字段大小對於文件上傳來說太大了。 ...
[英]Rust waiting for Tokio threads to finish
我正在嘗試創建一個小程序,它會在 MPSC 頻道收到消息時啟動新線程。 我能夠讓程序啟動線程,但無法弄清楚如何讓程序保持打開狀態。 這是應用程序:#[tokio::main] async fn main() { let (sender, mut receiver) = mpsc::chann ...
[英]Why `match` holds references longer than `if` in Rust?
在 Rust 中注意到match和if之間關於生命周期的以下差異 - 假設我們有簡單的結構:struct Foo; impl Foo { is_valid(&self) -> bool { true } } 和一個持有它的互斥量:let foo = tokio::sync:: ...
[英]How to deal with non-Send futures in a Tokio spawn context?
Tokio 的 spawn只能與Send未來一起使用。 這使得以下代碼無效:async fn async_foo(v: i32) {} async fn async_computation() -> Result<i32, Box<dyn std::error::Error& ...
[英]Understanding how to use rust TOKIO library
我想學習rust Tokio圖書館。 為了方便這一點,我想在 rust 中編寫一個 ASYNC TCP 記錄器。 基本上是一個連接到 TCP 服務器(172.16.10.10 端口 7777)的 TCP 客戶端,並且只將異步接收的消息記錄到日志文件中。 我希望主要的 function 從控制台讀取用 ...
[英]Rust async_trait return `impl Stream`?
我想為現有的異步 class 編寫一個模擬,而無需對原始 class 進行太多更改。 為了演示我的問題,我從Guillaume Endignoux Blog 獲取了源代碼。 我想將其更改為async trait : 但后來我收到消息: `impl Trait` only allowed in fu ...
[英]How to await `JoinHandle`s and update `JoinHandle`s at the same time?
是否可以從一組 JoinHandle JoinHandle<()>任務中讀取 stream 的Future並同時用新任務更新該組任務? 我目前有一個運行一些長任務的Service 。 唯一的問題是,我實際上想(如果可能的話)同時添加新任務——通過某種類型的Receiver通道發送的標志 ...
[英]What is the meaing of yield on tokio async rust?
在閱讀 Tokio rust 文檔時,它談到將控制權交還給線程。 這是否意味着function結束了他的執行並返回了一個值? tokio.rs 的確切引用是: async fn 定義看起來像常規的同步 function,但操作是異步的。 Rust 將編譯時的 async fn 轉換為異步操作 ...
[英]how to specify ambiguous associated types of supertraits
簡而言之,我面臨以下問題:我願意從tokio_util::codec抽象編解碼器實現。 為此,我定義了一個具有Decoder和Encoder<T>作為超特征的特征。use tokio_util::codec::{Decoder, Encoder}; struct CodecA {} ...
[英]no method named `incoming` found for struct `tokio::net::TcpListener`
我正在使用塔和 tokio 編寫一個 tcp 回顯服務器。 但是,我無法使用tokio:.net::TcpListener的incoming方法/* [dependencies] futures = "0.3" tokio = { version = "1", features = ["full"] ...