From 0fe01ebec7dec012a838e6c7394e727c3842dd09 Mon Sep 17 00:00:00 2001 From: David Laban Date: Thu, 20 Mar 2025 13:33:21 +0000 Subject: [PATCH 1/2] basic no_std support, as long as you avoid Text and Data and List --- capnp_conv_macros/src/generators.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/capnp_conv_macros/src/generators.rs b/capnp_conv_macros/src/generators.rs index 2c4b0b9..b35dc1b 100644 --- a/capnp_conv_macros/src/generators.rs +++ b/capnp_conv_macros/src/generators.rs @@ -571,7 +571,7 @@ fn generate_try_from_impl( let capnp_generics: Vec = generics.iter().map(to_capnp_generic).collect(); quote! { impl<'a, #(#generics, #capnp_generics),*> - ::std::convert::TryFrom<#capnp_path::Reader<'a, #(#capnp_generics),*>> + ::core::convert::TryFrom<#capnp_path::Reader<'a, #(#capnp_generics),*>> for #rust_name<#(#generics),*> where #(#generics: ::capnp_conv::Readable,)* From 45434627ab858048a90809ce7bfb919d649a18ce Mon Sep 17 00:00:00 2001 From: David Laban Date: Thu, 20 Mar 2025 16:54:32 +0000 Subject: [PATCH 2/2] tweaks after trying it in my esp_hal based project --- Cargo.toml | 2 +- capnp_conv/Cargo.toml | 4 ++++ capnp_conv/src/lib.rs | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index e092ff2..c793104 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,7 @@ readme = "README.md" capnp_conv = { path = "capnp_conv", version = "0.3.1" } capnp_conv_macros = { path = "capnp_conv_macros", version = "0.3.1" } -capnp = "0.20" +capnp = { "version" = "0.20", default-features = false } capnpc = "0.20" heck = "0.5" proc-macro2 = "1.0" diff --git a/capnp_conv/Cargo.toml b/capnp_conv/Cargo.toml index b70506f..db0b592 100644 --- a/capnp_conv/Cargo.toml +++ b/capnp_conv/Cargo.toml @@ -11,3 +11,7 @@ readme.workspace = true capnp_conv_macros.workspace = true capnp.workspace = true + +[features] +default = ["std"] +std = ["capnp/default"] diff --git a/capnp_conv/src/lib.rs b/capnp_conv/src/lib.rs index 286da12..ecf3c41 100644 --- a/capnp_conv/src/lib.rs +++ b/capnp_conv/src/lib.rs @@ -1,5 +1,8 @@ +#![cfg_attr(not(feature = "std"), no_std)] + use capnp::{traits::Owned, Result}; pub use capnp_conv_macros::capnp_conv; +use core::marker::Sized; pub trait Writable { type OwnedType: Owned;