{"id":7471,"date":"2026-07-23T01:37:33","date_gmt":"2026-07-22T17:37:33","guid":{"rendered":"https:\/\/i007.cc\/wordpress\/?p=7471"},"modified":"2026-07-23T01:38:00","modified_gmt":"2026-07-22T17:38:00","slug":"%e8%b0%88%e8%b0%88-rust-%e7%9a%84-serde","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/7471","title":{"rendered":"\u8c08\u8c08 Rust \u7684 serde"},"content":{"rendered":"<div data-rs-index=\"2\" data-index=\"2\">\n<div tabindex=\"0\" role=\"article\" aria-setsize=\"4\" aria-posinset=\"3\" aria-label=\"Message 3 of 4\">\n<div data-test-render-count=\"2\">\n<div class=\"mb-1 mt-[var(--msg-gap,1.5rem)] group group\/message-row\">\n<div class=\"flex flex-col items-end gap-1\">\n<div class=\"group relative inline-flex gap-2 bg-bg-300 dark:[[data-darker-default]_&amp;]:bg-bg-000 rounded-xl pl-2.5 py-[var(--msg-bubble-py,0.625rem)] break-words text-text-100 transition-all max-w-[75ch] flex-col !px-[var(--msg-bubble-px,1rem)] max-w-[85%]\" data-user-message-bubble=\"true\">\n<div class=\"flex flex-row gap-2 relative\">\n<div class=\"flex-1\">\n<div class=\"font-large !font-user-message py-0.5 grid grid-cols-1 gap-2 relative [&amp;_ul]:!space-y-0 [&amp;_ol]:!space-y-0 [&amp;_ul]:pl-8 [&amp;_ol]:pl-8\" data-testid=\"user-message\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div data-rs-index=\"3\" data-index=\"3\" data-last-message=\"true\">\n<div tabindex=\"-1\" role=\"article\" aria-setsize=\"4\" aria-posinset=\"4\" aria-label=\"Message 4 of 4\">\n<div data-test-render-count=\"1\">\n<div class=\"group group\/message-row\">\n<div class=\"group relative relative pb-[var(--msg-assistant-pb,0.75rem)]\" data-is-streaming=\"false\">\n<div class=\"font-claude-response relative leading-[1.65rem] [&amp;_pre&gt;div]:bg-bg-000\/50 [&amp;_pre&gt;div]:border-0.5 [&amp;_pre&gt;div]:border-border-400 [&amp;_.ignore-pre-bg&gt;div]:bg-transparent [&amp;_.standard-markdown_:is(p,blockquote,h1,h2,h3,h4,h5,h6)]:pl-2 [&amp;_.standard-markdown_:is(p,blockquote,ul,ol,h1,h2,h3,h4,h5,h6)]:pr-8 [&amp;_.progressive-markdown_:is(p,blockquote,h1,h2,h3,h4,h5,h6)]:pl-2 [&amp;_.progressive-markdown_:is(p,blockquote,ul,ol,h1,h2,h3,h4,h5,h6)]:pr-8\">\n<div class=\"grid grid-rows-[auto_auto] min-w-0\">\n<div class=\"row-start-2 col-start-1 relative grid grid-rows-[auto_auto] isolate min-w-0\">\n<div class=\"row-start-1 col-start-1 relative z-[2] min-w-0\">\n<div class=\"standard-markdown grid-cols-1 grid [&amp;_&gt;_*]:min-w-0 gap-3 [&amp;_&gt;_*:last-child]:mb-0 print:block print:[&amp;_&gt;_*_+_*]:mt-3 standard-markdown\">\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">Serde \u662f Rust \u751f\u6001\u91cc\u6700\u91cd\u8981\u7684\u5e93\u4e4b\u4e00\uff0c\u6ca1\u6709\u4e4b\u4e00\u3002\u51e0\u4e4e\u6240\u6709\u9700\u8981\u5904\u7406\u6570\u636e\u683c\u5f0f\u7684 Rust \u9879\u76ee\u90fd\u4f9d\u8d56\u5b83\u3002<\/p>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">\u6838\u5fc3\u601d\u60f3<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">Serde \u7684\u540d\u5b57\u6765\u81ea\u00a0<strong>Ser<\/strong>ialize +\u00a0<strong>De<\/strong>serialize\u3002\u5b83\u7684\u8bbe\u8ba1\u54f2\u5b66\u662f\u628a&#8221;\u6570\u636e\u7ed3\u6784\u7684\u63cf\u8ff0&#8221;\u548c&#8221;\u6570\u636e\u683c\u5f0f\u7684\u5b9e\u73b0&#8221;\u5f7b\u5e95\u5206\u79bb\uff1a<\/p>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3 print:block print:space-y-1\" dir=\"ltr\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">\u4f60\u7684\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">struct<\/code>\/<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">enum<\/code>\u00a0\u63cf\u8ff0\u6570\u636e\u957f\u4ec0\u4e48\u6837\uff08\u5b9e\u73b0\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">Serialize<\/code>\/<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">Deserialize<\/code>\u00a0trait\uff09<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">\u683c\u5f0f\u5e93\uff08JSON\u3001TOML\u3001MessagePack \u7b49\uff09\u63cf\u8ff0\u600e\u4e48\u7f16\u89e3\u7801<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">\u4e24\u8005\u901a\u8fc7 serde \u5b9a\u4e49\u7684<strong>\u4e2d\u95f4\u6570\u636e\u6a21\u578b<\/strong>\u5bf9\u8bdd\uff0c\u4e92\u4e0d\u4f9d\u8d56<\/li>\n<\/ul>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u8fd9\u610f\u5473\u7740\u4f60\u5199\u4e00\u6b21\u6570\u636e\u7ed3\u6784\uff0c\u5c31\u80fd\u81ea\u52a8\u652f\u6301\u51e0\u5341\u79cd\u683c\u5f0f\uff0c\u4e0d\u9700\u8981\u4e3a\u6bcf\u79cd\u683c\u5f0f\u5199\u4e00\u5957\u8f6c\u6362\u903b\u8f91\u3002<\/p>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">\u8fc7\u4eba\u4e4b\u5904<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><strong>\u96f6\u8fd0\u884c\u65f6\u5f00\u9500\u3002<\/strong>\u00a0Serde \u5728\u7f16\u8bd1\u671f\u901a\u8fc7\u8fc7\u7a0b\u5b8f\uff08procedural macro\uff09\u628a\u5e8f\u5217\u5316\u4ee3\u7801\u76f4\u63a5&#8221;\u5c55\u5f00&#8221;\u8fdb\u4f60\u7684\u7c7b\u578b\u91cc\uff0c\u751f\u6210\u7684\u662f\u9759\u6001\u5206\u6d3e\u7684\u5177\u4f53\u4ee3\u7801\uff0c\u6ca1\u6709\u4efb\u4f55\u865a\u8868\u67e5\u627e\u6216\u53cd\u5c04\u673a\u5236\u3002\u548c\u624b\u5199\u7684\u89e3\u6790\u4ee3\u7801\u6027\u80fd\u76f8\u5f53\uff0c\u8fd9\u5728\u4e3b\u6d41\u5e8f\u5217\u5316\u5e93\u91cc\u6781\u4e3a\u7f55\u89c1\u3002<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><strong>\u6d3e\u751f\u5b8f\u6781\u5ea6\u7701\u529b\u3002<\/strong>\u00a0\u7edd\u5927\u591a\u6570\u60c5\u51b5\u4e0b\u4f60\u53ea\u9700\u8981\u4e00\u884c\uff1a<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"rust code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">rust<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">#[derive(Serialize, Deserialize)]\r\nstruct User {\r\n    name: String,\r\n    age: u32,\r\n    #[serde(rename = \"email_address\")]\r\n    email: String,\r\n    #[serde(skip_serializing_if = \"Option::is_none\")]\r\n    bio: Option&lt;String&gt;,\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u5b57\u6bb5\u91cd\u547d\u540d\u3001\u8df3\u8fc7 None \u5b57\u6bb5\u3001\u9ed8\u8ba4\u503c\u3001\u6241\u5e73\u5316\u5d4c\u5957\u7ed3\u6784\u3001\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u903b\u8f91\u2026\u2026\u5168\u9760\u5c5e\u6027\u6807\u6ce8\u641e\u5b9a\uff0c\u4e0d\u9700\u8981\u624b\u5199 impl\u3002<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><strong>\u683c\u5f0f\u751f\u6001\u6781\u5176\u4e30\u5bcc\u3002<\/strong>\u00a0serde \u672c\u8eab\u4e0d\u7ed1\u5b9a\u4efb\u4f55\u683c\u5f0f\uff0c\u683c\u5f0f\u652f\u6301\u7531\u72ec\u7acb crate \u63d0\u4f9b\uff0c\u4e14\u51e0\u4e4e\u8986\u76d6\u4e86\u6240\u6709\u4f60\u80fd\u60f3\u5230\u7684\u683c\u5f0f\uff1a<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">serde_json<\/code>\u3001<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">toml<\/code>\u3001<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">serde_yaml<\/code>\u3001<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">bincode<\/code>\u3001<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">rmp-serde<\/code>\uff08MessagePack\uff09\u3001<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">ciborium<\/code>\uff08CBOR\uff09\u3001<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">postcard<\/code>\uff08\u5d4c\u5165\u5f0f\u53cb\u597d\uff09\u3001<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">ron<\/code>\uff08Rusty Object Notation\uff09\u2026\u2026<\/p>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">\u6570\u636e\u6a21\u578b<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">Serde \u5185\u90e8\u5b9a\u4e49\u4e86\u4e00\u5957 29 \u79cd\u7c7b\u578b\u7684<strong>\u81ea\u63cf\u8ff0\u6570\u636e\u6a21\u578b<\/strong>\uff0c\u5305\u62ec\u57fa\u7840\u7c7b\u578b\uff08bool\u3001\u6574\u6570\u3001\u6d6e\u70b9\u3001\u5b57\u7b26\u4e32\u3001\u5b57\u8282\u5e8f\u5217\uff09\u548c\u590d\u5408\u7c7b\u578b\uff08option\u3001unit\u3001newtype\u3001seq\u3001tuple\u3001map\u3001struct\u3001enum \u7684\u5404\u79cd\u53d8\u4f53\uff09\u3002<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u683c\u5f0f crate \u5b9e\u73b0\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">Serializer<\/code>\/<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">Deserializer<\/code>\u00a0trait\uff0c\u628a\u8fd9 29 \u79cd\u7c7b\u578b\u548c\u5177\u4f53\u683c\u5f0f\u4e4b\u95f4\u505a\u6620\u5c04\u3002\u4f60\u7684\u6570\u636e\u7ed3\u6784\u751f\u6210\u7684\u4ee3\u7801\u8c03\u7528\u8fd9\u4e9b trait \u65b9\u6cd5\u3002\u4e24\u5c42\u4e4b\u95f4\u6ca1\u6709\u4efb\u4f55\u8fd0\u884c\u65f6\u4e2d\u95f4\u8868\u793a\uff0c\u7f16\u8bd1\u5668\u4f1a\u628a\u6574\u4e2a\u8c03\u7528\u94fe\u5185\u8054\u4f18\u5316\u6389\u3002<\/p>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">\u9ad8\u7ea7\u7528\u6cd5<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><strong>\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\uff1a<\/strong>\u00a0\u5b9e\u73b0\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">Serialize<\/code>\/<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">Deserialize<\/code>\u00a0trait \u624b\u5199\u903b\u8f91\uff0c\u6216\u7528\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">#[serde(with = \"module\")]<\/code>\u00a0\u6307\u5b9a\u8f85\u52a9\u6a21\u5757\uff0c\u9002\u5408\u5904\u7406\u7b2c\u4e09\u65b9\u7c7b\u578b\u6216\u7279\u6b8a\u683c\u5f0f\u3002<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><strong><code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">#[serde(flatten)]<\/code>\uff1a<\/strong>\u00a0\u628a\u5d4c\u5957 struct \u7684\u5b57\u6bb5\u5c55\u5f00\u5230\u7236\u5c42\uff0c\u5e38\u7528\u4e8e\u5904\u7406 JSON \u91cc\u7684\u516c\u5171\u5b57\u6bb5\u6a21\u5f0f\u3002<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><strong><code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">#[serde(tag = \"type\")]<\/code>\uff1a<\/strong>\u00a0\u679a\u4e3e\u7684\u6807\u7b7e\u5316\u5e8f\u5217\u5316\uff0c\u53ef\u4ee5\u63a7\u5236\u591a\u6001 JSON \u7684\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">{\"type\": \"Circle\", \"radius\": 5}<\/code>\u00a0\u8fd9\u79cd\u7ed3\u6784\u3002<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><strong><code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">serde_with<\/code>\uff1a<\/strong>\u00a0\u793e\u533a crate\uff0c\u63d0\u4f9b\u5927\u91cf\u5e38\u7528\u8f85\u52a9\u5e8f\u5217\u5316\u5668\uff0c\u6bd4\u5982\u628a\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">Vec<\/code>\u00a0\u5e8f\u5217\u5316\u6210\u9017\u53f7\u5206\u9694\u5b57\u7b26\u4e32\u3001\u5904\u7406\u5404\u79cd\u65f6\u95f4\u683c\u5f0f\u3001\u8df3\u8fc7\u7a7a\u96c6\u5408\u7b49\u3002<\/p>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">\u5b58\u5728\u7684\u95ee\u9898<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><strong>\u7f16\u8bd1\u65f6\u95f4\u662f\u6700\u5927\u7684\u75db\u70b9\u3002<\/strong>\u00a0\u8fc7\u7a0b\u5b8f\u5c55\u5f00 + \u6cdb\u578b\u5355\u6001\u5316\uff0c\u5728\u5927\u578b\u9879\u76ee\u91cc\u4f1a\u663e\u8457\u62d6\u6162\u7f16\u8bd1\u901f\u5ea6\u3002\u4e00\u4e2a\u6709\u51e0\u5341\u4e2a\u6d3e\u751f serde \u7684 struct \u7684 crate\uff0c\u7f16\u8bd1\u65f6\u95f4\u53ef\u80fd\u7ffb\u51e0\u500d\u3002\u8fd9\u662f Rust \u5b8f\u7cfb\u7edf\u7684\u901a\u75c5\uff0cserde \u9996\u5f53\u5176\u51b2\u3002<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><strong>\u9519\u8bef\u4fe1\u606f\u6709\u65f6\u4ee4\u4eba\u5d29\u6e83\u3002<\/strong>\u00a0\u5f53\u7c7b\u578b\u4e0d\u6ee1\u8db3\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">Deserialize<\/code>\u00a0bound \u65f6\uff0c\u7f16\u8bd1\u5668\u5410\u51fa\u7684\u9519\u8bef\u7ecf\u5e38\u6307\u5411\u5b8f\u5c55\u5f00\u7684\u5185\u90e8\uff0c\u800c\u4e0d\u662f\u4f60\u5199\u9519\u7684\u90a3\u4e00\u884c\uff0c\u521d\u5b66\u8005\u5bb9\u6613\u8ff7\u5931\u3002<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><strong>\u4eba\u4f53\u5de5\u5b66\u8fb9\u754c\u6848\u4f8b\u591a\u3002<\/strong>\u00a0\u81ea\u5f15\u7528\u7ed3\u6784\uff08\u5982\u542b\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">&amp;'a str<\/code>\u00a0\u7684\u7ed3\u6784\uff09\u9700\u8981\u7528\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">#[serde(borrow)]<\/code>\uff1b\u67d0\u4e9b\u679a\u4e3e\u53d8\u4f53\u7684\u5e8f\u5217\u5316\u884c\u4e3a\u548c\u76f4\u89c9\u4e0d\u7b26\uff1b\u5904\u7406\u672a\u77e5\u5b57\u6bb5\u9700\u8981\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">serde_json::Value<\/code>\u00a0\u6216\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">#[serde(flatten)] extra: HashMap&lt;String, Value&gt;<\/code>\uff0c\u7a0d\u663e\u7e41\u7410\u3002<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><strong><code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">serde_derive<\/code>\u00a0\u66fe\u7ecf\u95f9\u8fc7\u98ce\u6ce2\u3002<\/strong>\u00a02023 \u5e74\u4f5c\u8005\u5728\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">serde_derive<\/code>\u00a0\u91cc\u5f15\u5165\u4e86\u9884\u7f16\u8bd1\u7684\u4e8c\u8fdb\u5236 proc-macro\uff0c\u7ed5\u8fc7\u4e86 Rust \u7684 crate \u7f16\u8bd1\u6d41\u7a0b\uff0c\u793e\u533a\u5f3a\u70c8\u53cd\u5f39\uff0c\u6700\u7ec8\u56de\u9000\u3002\u8fd9\u4ef6\u4e8b\u66b4\u9732\u4e86\u5173\u952e\u57fa\u7840\u8bbe\u65bd\u4f9d\u8d56\u5355\u4e00\u7ef4\u62a4\u8005\u7684\u751f\u6001\u98ce\u9669\u3002<\/p>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">\u5bf9\u884c\u4e1a\u7684\u5f71\u54cd<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">Serde \u4ece\u6839\u672c\u4e0a\u5f71\u54cd\u4e86 Rust \u751f\u6001\u7684\u8bbe\u8ba1\u60ef\u4f8b\u2014\u2014&#8221;\u6570\u636e\u7ed3\u6784\u548c\u683c\u5f0f\u89e3\u8026\uff0c\u901a\u8fc7 trait \u6865\u63a5&#8221;\u51e0\u4e4e\u6210\u4e86 Rust \u5e93\u8bbe\u8ba1\u7684\u9ed8\u8ba4\u8303\u5f0f\u3002\u5b83\u8bc1\u660e\u4e86\u8fc7\u7a0b\u5b8f\u53ef\u4ee5\u5728\u96f6\u8fd0\u884c\u65f6\u4ee3\u4ef7\u7684\u524d\u63d0\u4e0b\u5b9e\u73b0\u6781\u9ad8\u7684\u5f00\u53d1\u8005\u4f53\u9a8c\uff0c\u8fd9\u4e2a\u601d\u8def\u540e\u6765\u88ab\u00a0<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">diesel<\/code>\uff08ORM\uff09\u3001<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">clap<\/code>\uff08\u547d\u4ee4\u884c\u89e3\u6790\uff09\u3001<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">axum<\/code>\uff08\u8def\u7531\u63d0\u53d6\u5668\uff09\u7b49\u5e93\u5e7f\u6cdb\u501f\u9274\u3002<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">\u5728 Go\u3001Python \u8fd9\u4e9b\u8bed\u8a00\u91cc\uff0c\u5e8f\u5217\u5316\u4f9d\u8d56\u8fd0\u884c\u65f6\u53cd\u5c04\uff0c\u6027\u80fd\u4e0a\u6709\u5929\u82b1\u677f\uff0c\u4e14\u7c7b\u578b\u5b89\u5168\u6027\u5f31\u3002Serde \u7684\u65b9\u6848\u628a\u8fd9\u4e2a\u95ee\u9898\u5f7b\u5e95\u63a8\u5230\u7f16\u8bd1\u671f\u89e3\u51b3\uff0c\u662f&#8221;Rust \u80fd\u505a\u5230\u522b\u7684\u8bed\u8a00\u505a\u4e0d\u5230\u7684\u4e8b&#8221;\u7684\u6807\u5fd7\u6027\u6848\u4f8b\u4e4b\u4e00\u3002<\/p>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h3 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"ltr\">\u4e00\u53e5\u8bdd\u603b\u7ed3<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">Serde \u662f Rust \u7684\u5e8f\u5217\u5316\u534f\u8bae\u5c42\uff0c\u5b83\u7684\u8bbe\u8ba1\u8ba9&#8221;\u96f6\u6210\u672c\u62bd\u8c61&#8221;\u8fd9\u4e2a Rust \u7684\u6838\u5fc3\u627f\u8bfa\u5728\u6570\u636e\u683c\u5f0f\u9886\u57df\u5f97\u5230\u4e86\u6700\u6f02\u4eae\u7684\u4e00\u6b21\u5b9e\u8df5\u3002\u5982\u679c\u4f60\u5728\u5199\u4efb\u4f55\u9700\u8981\u8bfb\u5199\u5916\u90e8\u6570\u636e\u7684 Rust \u4ee3\u7801\uff0c\u51e0\u4e4e\u6ca1\u6709\u7406\u7531\u4e0d\u7528\u5b83\u3002<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Serde \u662f Rust \u751f\u6001\u91cc\u6700\u91cd\u8981\u7684<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[24],"tags":[],"class_list":["post-7471","post","type-post","status-publish","format-standard","hentry","category-value_docs"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/7471","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=7471"}],"version-history":[{"count":2,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/7471\/revisions"}],"predecessor-version":[{"id":7473,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/7471\/revisions\/7473"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=7471"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=7471"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=7471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}