noosphere_into/transcluder/
transcluder_implementation.rs

1use crate::{ResolvedLink, Transclude};
2
3use anyhow::Result;
4use async_trait::async_trait;
5
6#[cfg(not(target_arch = "wasm32"))]
7pub trait TranscluderConditionalSendSync: Send + Sync {}
8
9#[cfg(not(target_arch = "wasm32"))]
10impl<S> TranscluderConditionalSendSync for S where S: Send + Sync {}
11
12#[cfg(target_arch = "wasm32")]
13pub trait TranscluderConditionalSendSync {}
14
15#[cfg(target_arch = "wasm32")]
16impl<S> TranscluderConditionalSendSync for S {}
17/// A [Transcluder] is responsible for taking a slug and generating a transclude
18/// for the content that the slug refers to.
19#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
20#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
21pub trait Transcluder: Clone + TranscluderConditionalSendSync {
22    /// Given a [ResolvedLink], produce a [Transclude] if it is appropriate to
23    /// do so.
24    async fn transclude(&self, link: &ResolvedLink) -> Result<Option<Transclude>>;
25}