Fix missing Send on generic stream and result items.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-10-03 02:09:44 +00:00
parent 2b9563be67
commit 1d14426018
4 changed files with 17 additions and 15 deletions

View File

@@ -149,7 +149,7 @@ pub async fn get_shortstatekey(
#[implement(Service)] #[implement(Service)]
pub async fn get_eventid_from_short<Id>(&self, shorteventid: ShortEventId) -> Result<Id> pub async fn get_eventid_from_short<Id>(&self, shorteventid: ShortEventId) -> Result<Id>
where where
Id: for<'de> Deserialize<'de> + Sized + ToOwned, Id: for<'de> Deserialize<'de> + Send + Sized + ToOwned,
<Id as ToOwned>::Owned: Borrow<EventId>, <Id as ToOwned>::Owned: Borrow<EventId>,
{ {
const BUFSIZE: usize = size_of::<ShortEventId>(); const BUFSIZE: usize = size_of::<ShortEventId>();
@@ -169,7 +169,7 @@ pub fn multi_get_eventid_from_short<'a, Id, S>(
) -> impl Stream<Item = Result<Id>> + Send + 'a ) -> impl Stream<Item = Result<Id>> + Send + 'a
where where
S: Stream<Item = ShortEventId> + Send + 'a, S: Stream<Item = ShortEventId> + Send + 'a,
Id: for<'de> Deserialize<'de> + Sized + ToOwned + 'a, Id: for<'de> Deserialize<'de> + Send + Sized + ToOwned + 'a,
<Id as ToOwned>::Owned: Borrow<EventId>, <Id as ToOwned>::Owned: Borrow<EventId>,
{ {
shorteventid shorteventid

View File

@@ -29,7 +29,7 @@ use ruma::{
}; };
use tuwunel_core::{ use tuwunel_core::{
Result, err, Result, err,
matrix::{Event, room_version, state_res::events::RoomCreateEvent}, matrix::{Pdu, room_version, state_res::events::RoomCreateEvent},
}; };
pub struct Service { pub struct Service {
@@ -65,7 +65,7 @@ impl Service {
Ok(RoomPowerLevels::new(power_levels.into(), &rules.authorization, creators)) Ok(RoomPowerLevels::new(power_levels.into(), &rules.authorization, creators))
} }
pub async fn get_create(&self, room_id: &RoomId) -> Result<RoomCreateEvent<impl Event>> { pub async fn get_create(&self, room_id: &RoomId) -> Result<RoomCreateEvent<Pdu>> {
self.room_state_get(room_id, &StateEventType::RoomCreate, "") self.room_state_get(room_id, &StateEventType::RoomCreate, "")
.await .await
.map(RoomCreateEvent::new) .map(RoomCreateEvent::new)

View File

@@ -5,7 +5,7 @@ use ruma::{EventId, RoomId, events::StateEventType};
use serde::Deserialize; use serde::Deserialize;
use tuwunel_core::{ use tuwunel_core::{
Result, err, implement, Result, err, implement,
matrix::{Event, StateKey}, matrix::{Event, Pdu, StateKey},
}; };
/// Returns a single PDU from `room_id` with key (`event_type`,`state_key`). /// Returns a single PDU from `room_id` with key (`event_type`,`state_key`).
@@ -17,7 +17,7 @@ pub async fn room_state_get_content<T>(
state_key: &str, state_key: &str,
) -> Result<T> ) -> Result<T>
where where
T: for<'de> Deserialize<'de>, T: for<'de> Deserialize<'de> + Send,
{ {
self.room_state_get(room_id, event_type, state_key) self.room_state_get(room_id, event_type, state_key)
.await .await
@@ -69,7 +69,7 @@ pub async fn room_state_get_id<Id>(
state_key: &str, state_key: &str,
) -> Result<Id> ) -> Result<Id>
where where
Id: for<'de> Deserialize<'de> + Sized + ToOwned, Id: for<'de> Deserialize<'de> + Send + Sized + ToOwned,
<Id as ToOwned>::Owned: Borrow<EventId>, <Id as ToOwned>::Owned: Borrow<EventId>,
{ {
self.services self.services
@@ -88,7 +88,7 @@ pub async fn room_state_get(
room_id: &RoomId, room_id: &RoomId,
event_type: &StateEventType, event_type: &StateEventType,
state_key: &str, state_key: &str,
) -> Result<impl Event> { ) -> Result<Pdu> {
self.services self.services
.state .state
.get_room_shortstatehash(room_id) .get_room_shortstatehash(room_id)

View File

@@ -11,7 +11,7 @@ use ruma::{
use serde::Deserialize; use serde::Deserialize;
use tuwunel_core::{ use tuwunel_core::{
Result, at, err, implement, Result, at, err, implement,
matrix::{Event, StateKey}, matrix::{Event, Pdu, StateKey},
pair_of, pair_of,
utils::{ utils::{
result::FlatOk, result::FlatOk,
@@ -64,7 +64,7 @@ pub async fn state_get_content<T>(
state_key: &str, state_key: &str,
) -> Result<T> ) -> Result<T>
where where
T: for<'de> Deserialize<'de>, T: for<'de> Deserialize<'de> + Send,
{ {
self.state_get(shortstatehash, event_type, state_key) self.state_get(shortstatehash, event_type, state_key)
.await .await
@@ -127,10 +127,12 @@ pub async fn state_get(
shortstatehash: ShortStateHash, shortstatehash: ShortStateHash,
event_type: &StateEventType, event_type: &StateEventType,
state_key: &str, state_key: &str,
) -> Result<impl Event> { ) -> Result<Pdu> {
self.state_get_id(shortstatehash, event_type, state_key) let event_id: OwnedEventId = self
.and_then(async |event_id: OwnedEventId| self.services.timeline.get_pdu(&event_id).await) .state_get_id(shortstatehash, event_type, state_key)
.await .await?;
self.services.timeline.get_pdu(&event_id).await
} }
/// Returns a single EventId from `room_id` with key (`event_type`, /// Returns a single EventId from `room_id` with key (`event_type`,
@@ -143,7 +145,7 @@ pub async fn state_get_id<Id>(
state_key: &str, state_key: &str,
) -> Result<Id> ) -> Result<Id>
where where
Id: for<'de> Deserialize<'de> + Sized + ToOwned, Id: for<'de> Deserialize<'de> + Send + Sized + ToOwned,
<Id as ToOwned>::Owned: Borrow<EventId>, <Id as ToOwned>::Owned: Borrow<EventId>,
{ {
let shorteventid = self let shorteventid = self