From a14e610993ec5b19f5ce874c41394a76660d3276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 11 Nov 2019 10:20:21 +0100 Subject: [PATCH] Generate pinned box futures and use the stabilized futures --- src/analysis/functions.rs | 8 ++------ src/codegen/function.rs | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/analysis/functions.rs b/src/analysis/functions.rs index 6ac582d0f..adc5f6968 100644 --- a/src/analysis/functions.rs +++ b/src/analysis/functions.rs @@ -32,8 +32,6 @@ use std::{ collections::{HashMap, HashSet}, }; -pub const CONSTRAINT_FUTURES: &str = "feature = \"futures\""; - #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum Visibility { Public, @@ -695,15 +693,13 @@ fn analyze_function( if r#async && !commented { if env.config.library_name != "Gio" { imports.add("gio_sys"); - imports.add_with_constraint("gio", version, Some(CONSTRAINT_FUTURES)); + imports.add_with_constraint("gio", version, None); } imports.add("glib_sys"); imports.add("gobject_sys"); imports.add("std::ptr"); imports.add("std::boxed::Box as Box_"); - if async_future.is_some() { - imports.add_with_constraint("futures::future", version, Some(CONSTRAINT_FUTURES)); - } + imports.add("std::pin::Pin"); if let Some(ref trampoline) = trampoline { for par in &trampoline.output_params { diff --git a/src/codegen/function.rs b/src/codegen/function.rs index 54af9fe04..e7e89418a 100644 --- a/src/codegen/function.rs +++ b/src/codegen/function.rs @@ -98,7 +98,7 @@ pub fn generate( writeln!( w, - "{}{}#[cfg(any(feature = \"futures\", feature = \"dox\"))]", + "{}{}", tabs(indent), comment_prefix )?; @@ -168,7 +168,7 @@ pub fn declaration_futures(env: &Env, analysis: &analysis::functions::Info) -> S let async_future = analysis.async_future.as_ref().unwrap(); let return_str = format!( - " -> Box_> + std::marker::Unpin>", + " -> Pin> + 'static>>", async_future.success_parameters, async_future.error_parameters );