Serializing issue with primitive_types::u256 in a struct

In a struct { balance: U256 } i want to use U256 type but isn't supported by rust. so I imported primitive_type crates and doing with that. but when i do cargo check i am receiving the below error

  the trait `Serialize` is not implemented for `primitive_types::U256`

I want to serialize the struct with U256 variable

According to documentation, there's a disabled-by-default feature serde which enables the serialization.

1 Like

Thanks for your reply. Could you please elaborate on that. I am new to rust. Would be very helpful

you mean this --> serde = { version = '1.0.100', default-features = false, features = ['derive'] }

this already have in my cargo.toml

I mean the similar thing for primitive_types:

primitive_types = { version = "0.10.1", features = ["serde"] }

thank you so much this i've added it in Cargo.toml file under [dependencies]
should i add it under [features] as well? if so how it should look like?
currently it is as like below
[features]
default = ['std']
std = [
'primitive-types/std'
]

The [features] section is only for parts of your own code that are optional. You should only add it there if you are writing a library with serde support, and you want that serde support to be optional.

1 Like

Thank you much. But after that issue is resolved I am getting the following error.

That seems to be unrelated to the topic of serializing U256. You have to enable the std feature of sp_io to get it to work together with the standard library.

Yes I have already enabled std feature of sp_io. still stuck on it. kindly help

Please post your Cargo.toml

1 Like
parking_lot = '0.11'
parity-scale-codec = { version = '2.0', default-features = false, features = ['derive'] }
# https://github.com/serde-rs/json/pull/606
#serde = {version = "0.9",  default-features = false, features = ['derive'] }
serde_derive = "0.9"
#serde_json = {version = "0.9",  default-features = false, features = ['alloc'] }
serde = { version = '1.0.100', default-features = true, features = ['derive'] }
serde_json = { version = '1.0.45', default-features = false, features = ['alloc'] }
futures =  { version = "0.3",  default-features = false}

#EthEventListenMethod dependency
web3 = { version = "0.14.0", optional = true}
tokio = { version = "0.2", default-features = false, features = ['macros']}
hex-literal = { version = "0.3.1", default-features = false }
hex = {version = "0.4.3", default-features = false}


# Substrate packages
frame-support = { version = '3.0', default-features = false }
frame-system = { version = '3.0', default-features = false }
sp-arithmetic = { version = '3.0', default-features = false }
sp-core = { version = '3.0', default-features = false }
sp-io = { version = '3.0', default-features = true}
sp-runtime = { version = '3.0', default-features = false }
sp-std = { version = '3.0', default-features = false }
sp-keystore = { version = '0.9', optional = true }
sc-keystore = {version = "3.0.0", optional = true}
# substrate-primitives = {version = "1.0.0", default-features = false}
primitive-types = {version = "0.10.1", default-features = false, features = ["serde"] }
#ethereum-types = {version = "0.12.0", default-features = false, }
#ethabi = {version = "15.0.0", default-features = false}
#uint = {version = "0.8", default-features = false}

[features]
default = ['std']
std = [
	'frame-support/std',
	'frame-system/std',
	'parity-scale-codec/std',
	'sp-keystore',
	'sc-keystore',
	'sp-io/std',
	'sp-runtime/std',
	'sp-std/std',
	'sp-arithmetic/std',
	'sp-keystore/std',
	'web3',
	'hex/std',
	'tokio/macros',
	'futures/std',
        'primitive-types/std'
]```

Please learn how to use code blocks.

parking_lot = '0.11'
parity-scale-codec = { version = '2.0', default-features = false, features = ['derive'] }
# https://github.com/serde-rs/json/pull/606
#serde = {version = "0.9",  default-features = false, features = ['derive'] }
serde_derive = "0.9"
#serde_json = {version = "0.9",  default-features = false, features = ['alloc'] }
serde = { version = '1.0.100', default-features = true, features = ['derive'] }
serde_json = { version = '1.0.45', default-features = false, features = ['alloc'] }
futures =  { version = "0.3",  default-features = false}

#EthEventListenMethod dependency
web3 = { version = "0.14.0", optional = true}
tokio = { version = "0.2", default-features = false, features = ['macros']}
hex-literal = { version = "0.3.1", default-features = false }
hex = {version = "0.4.3", default-features = false}


# Substrate packages
frame-support = { version = '3.0', default-features = false }
frame-system = { version = '3.0', default-features = false }
sp-arithmetic = { version = '3.0', default-features = false }
sp-core = { version = '3.0', default-features = false }
sp-io = { version = '3.0', default-features = true}
sp-runtime = { version = '3.0', default-features = false }
sp-std = { version = '3.0', default-features = false }
sp-keystore = { version = '0.9', optional = true }
sc-keystore = {version = "3.0.0", optional = true}
# substrate-primitives = {version = "1.0.0", default-features = false}
primitive-types = {version = "0.10.1", default-features = false, features = ["serde"] }
#ethereum-types = {version = "0.12.0", default-features = false, }
#ethabi = {version = "15.0.0", default-features = false}
#uint = {version = "0.8", default-features = false}

[features]
default = ['std']
std = [
	'frame-support/std',
	'frame-system/std',
	'parity-scale-codec/std',
	'sp-keystore',
	'sc-keystore',
	'sp-io/std',
	'sp-runtime/std',
	'sp-std/std',
	'sp-arithmetic/std',
	'sp-keystore/std',
	'web3',
	'hex/std',
	'tokio/macros',
	'futures/std',
	'primitive-types/std'
]

Thanks for pointing it out. Edited the previous Cargo.toml content pasted above

How are you compiling it? Try with cargo build --features std

I am doing cargo check. i am not building . in cargo check only i am facing this issue.

Tried with cargo build --features std
still same error

You could try to add the disable_panic_handler feature to sp_io, but it really should work based on my reading the source code.

1 Like

Thank you so much for your help. That resolved the issue. But now getting another error. Really frustrating. Kindly help

error[E0046]: not all trait items implemented, missing: `Pair` --> /home/.cargo/registry/src/github.com-1ecc6299db9ec823/sp-application-crypto-3.0.0/src/lib.rs:240:3 | 240 | impl $crate::CryptoType for Public {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `Pair` in implementation