{"id":1184,"hash":"4c9a474dff896602f924cb0df102499ca3cc7803bc44815ff4d7963e2fb02a3e","pattern":"Serde&#39;s Serialize implementation not found for Rocket&#39;s UUID","full_message":"I'm trying to create a custom struct using the UUID struct from Rocket as a field type. I want it to be serialized using Serde in order to convert it to JSON easily.\n\nWhen trying to do this, I get an error:\n\nerror[E0277]: the trait bound `rocket_contrib::UUID: \nmodel::event::_IMPL_DESERIALIZE_FOR_Event::_serde::Serialize` is not \nsatisfied\n --> src/service/document.rs:4:10\n  |\n4 | #[derive(Serialize, Deserialize)]\n  |          ^^^^^^^^^ the trait \n`model::event::_IMPL_DESERIALIZE_FOR_Event::_serde::Serialize` is not \nimplemented for `rocket_contrib::UUID`\n  |\n  = note: required by `model::event::_IMPL_DESERIALIZE_FOR_Event::_serde::ser::SerializeStruct::serialize_field`\n\nerror[E0277]: the trait bound `rocket_contrib::UUID: \nmodel::event::_IMPL_DESERIALIZE_FOR_Event::_serde::Deserialize<'_>` is not satisfied\n --> src/service/document.rs:4:21\n  |\n4 | #[derive(Serialize, Deserialize)]\n  |                     ^^^^^^^^^^^ the trait \n`model::event::_IMPL_DESERIALIZE_FOR_Event::_serde::Deserialize<'_>` is not implemented for `rocket_contrib::UUID`\n  |\n  = note: required by `model::event::_IMPL_DESERIALIZE_FOR_Event::_serde::de::SeqAccess::next_element`\n\nerror[E0277]: the trait bound `rocket_contrib::UUID: model::event::_IMPL_DESERIALIZE_FOR_Event::_serde::Deserialize<'_>` is not satisfied\n --> src/service/document.rs:4:21\n  |\n4 | #[derive(Serialize, Deserialize)]\n  |                     ^^^^^^^^^^^ the trait `model::event::_IMPL_DESERIALIZE_FOR_Event::_serde::Deserialize<'_>` is not implemented for `rocket_contrib::UUID`\n  |\n  = note: required by `model::event::_IMPL_DESERIALIZE_FOR_Event::_serde::de::MapAccess::next_value`\n\nMy struct:\n\n#[derive(Serialize, Deserialize)]\npub struct Document {\n    id: UUID,\n    user_id: UUID,\n    created: i64,\n    updated: i64,\n    text: String\n}\n\nMy imports:\n\n[dependencies]\nrocket = \"0.3.17\"\nrocket_codegen = \"0.3.17\"\n\nserde_derive = \"1.0.80\"\nserde = \"1.0.80\"\n\nchrono = \"0.4\"\n\n[dependencies.rocket_contrib]\nversion = \"0.3.17\"\ndefault-features = false\nfeatures = [\"json\", \"uuid\", \"serde\"]\n\nEndpoint where I use the struct:\n\n#[get(\"/document/<id>\")]\npub fn get_document(id: UUID) -> status::Accepted<Json<Document>> {\n    status::Accepted(Some(Json(document::get_document(id))))\n}\n\nI've checked all dependencies, and I have the serde feature enabled in rocket_contrib. I've run out of ideas what to check next.","ecosystem":"cargo","package_name":"serde","package_version":null,"solution":"rocket_contrib::UUID does not implement Serialize:\n\n#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Debug)]\npub struct UUID(uuid_ext::Uuid);\n\nIf the type doesn't implement Serialize, you can't make it.\n\nAs mcarton points out:\n\n  you still can implement Serialize for your type, you simply can't derive it and will have to implement it by hand.\n\nThat could look something like:\n\n#[derive(Serialize, Deserialize)]\npub struct Document {\n    #[serde(with = \"my_uuid\")]\n    id: UUID,\n    #[serde(with = \"my_uuid\")]\n    user_id: UUID,\n    created: i64,\n    updated: i64,\n    text: String,\n}\n\nmod my_uuid {\n    use rocket_contrib::UUID;\n    use serde::{de::Error, Deserialize, Deserializer, Serialize, Serializer};\n    use std::str::FromStr;\n\n    pub fn serialize<S>(val: &UUID, serializer: S) -> Result<S::Ok, S::Error>\n    where\n        S: Serializer,\n    {\n        val.to_string().serialize(serializer)\n    }\n\n    pub fn deserialize<'de, D>(deserializer: D) -> Result<UUID, D::Error>\n    where\n        D: Deserializer<'de>,\n    {\n        let val: &str = Deserialize::deserialize(deserializer)?;\n        UUID::from_str(val).map_err(D::Error::custom)\n    }\n}\n\nSee also:\n\nHow to transform fields during serialization using Serde?\nHow to transform fields during deserialization using Serde?\nIs there a way for me to use #[derive] on a struct or enum from a library without editing the actual library's source code?\nHow do I implement a trait I don't own for a type I don't own?\nAdd Serialize attribute to type from third-party lib","confidence":0.95,"source":"stackoverflow","source_url":"https://stackoverflow.com/questions/52992164/serdes-serialize-implementation-not-found-for-rockets-uuid","votes":8,"created_at":"2026-04-19T04:52:32.443578+00:00","updated_at":"2026-04-19T04:52:32.443578+00:00"}