mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-17 23:38:06 +08:00
* Make node graph execution async Make node macro generate async node implementations Start propagating async through the node system Async checkpoint Make Any<'i> Send + Sync Determine node io type using panic node Fix types for raster_node macro Finish porting node registry? Fix lifetime errors Remove Send + Sync requirements and start making node construction async Async MVP Fix tests Clippy fix * Fix nodes * Simplify lifetims for node macro + make node macro more modular * Reenable more nodes * Fix pasting images * Remove http test from brush node * Fix output type for cache node * Fix types for let scope * Fix formatting
33 lines
765 B
Rust
33 lines
765 B
Rust
use std::future::Future;
|
|
|
|
use crate::Node;
|
|
|
|
pub struct GetNode;
|
|
|
|
#[node_macro::node_fn(GetNode)]
|
|
async fn get_node(url: String) -> reqwest::Response {
|
|
reqwest::get(url).await.unwrap()
|
|
}
|
|
|
|
pub struct PostNode<Body> {
|
|
body: Body,
|
|
}
|
|
|
|
#[node_macro::node_fn(PostNode)]
|
|
async fn post_node(url: String, body: String) -> reqwest::Response {
|
|
reqwest::Client::new().post(url).body(body).send().await.unwrap()
|
|
}
|
|
|
|
#[derive(Clone, Copy, Debug)]
|
|
pub struct EvalSyncNode {}
|
|
|
|
#[node_macro::node_fn(EvalSyncNode)]
|
|
fn eval_sync<F: Future + 'input>(future: F) -> F::Output {
|
|
let future = futures::future::maybe_done(future);
|
|
futures::pin_mut!(future);
|
|
match future.as_mut().take_output() {
|
|
Some(value) => value,
|
|
_ => panic!("Node construction future returned pending"),
|
|
}
|
|
}
|