1import{a as U}from"./chunk-SMZ3IAFU.js";import{a as W}from"./chunk-23ZTWDY5.js";import"./chunk-YVJFIJCG.js";import{a as H,b as z}from"./chunk-G7D3OPX7.js";import{a as A}from"./chunk-PE7RV3QX.js";import{a as q}from"./chunk-Z72OYXYQ.js";import{a as D,b as V}from"./chunk-IHIRAMG2.js";import{a as j}from"./chunk-7WO6VACR.js";import{$ as w,B as g,G as o,Ga as T,I as u,Ia as E,J as y,Ja as k,N as h,Q as c,Qa as R,Ra as _,V as i,W as t,X as l,Ya as I,Za as L,aa as M,da as f,ea as b,fa as v,ia as r,ib as J,ja as s,ka as S,mb as N,r as x,s as O,z as P}from"./chunk-NVZAJGIR.js";import"./chunk-74LBKPKT.js";var $={metaTitle:"Rust to JSON Converter \u2014 Structs & Serde Types Into JSON",metaDescription:"Paste Rust \u2014 structs with Serialize derive, Vec<T>, Option<T>, nested types \u2014 and get clean JSON back. No serde_json boilerplate, no cargo run needed.",keywords:"rust to json, rust struct to json, serde to json, rust derive serialize to json, rust object to json, rust to json converter, rust nested struct to json, convert rust model to json, rust dto to json, serde_json alternative",routePath:"rust-to-json",pageHeading:"Rust to JSON Converter",pageSubheading:"Paste Rust structs with Serialize derive. Get clean JSON back.",sample:"Load Sample",convert:"Convert",toolbarHint:'Paste Rust on the left and click <span class="fix-text">"Convert"</span> \u2014 we will turn it into JSON',toolbarHintShort:"Paste Rust code",contentWhatIsTitle:"What this tool does",contentWhatIsP1:'If you have ever defined a struct, slapped <code>#[derive(Serialize)]</code> on it, and realized you just need the JSON without writing the <a href="https://serde.rs/" target="_blank" rel="noopener">serde</a> boilerplate, adding <a href="https://crates.io/crates/serde_json" target="_blank" rel="noopener">serde_json</a> to <code>Cargo.toml</code>, and running <code>cargo run</code> \u2014 this tool does that. Paste the <a href="https://www.rust-lang.org/" target="_blank" rel="noopener">Rust</a> here and get valid JSON back without touching cargo. It handles a single struct literal, a whole module with several types, or something with deeply nested <code>Vec</code> and <code>Option</code> \u2014 same result: a clean JSON document with every field preserved.',contentWhatIsP2:'The converter tracks how serde actually serializes values. <code>String</code> and <code>&str</code> become JSON strings. <code>i32</code>, <code>u64</code>, <code>f32</code>, <code>f64</code> all become JSON numbers. <code>bool</code> becomes <code>true</code>/<code>false</code>. <code>Vec<T></code>, <code>&[T]</code>, and <code>[T; N]</code> become JSON arrays. <code>HashMap<String, V></code> / <code>BTreeMap<String, V></code> become JSON objects. <code>Option<T></code> with <code>None</code> becomes JSON <code>null</code>; with <code>Some(value)</code> it serializes the inner type. Tuples come out as heterogeneous arrays \u2014 the exact behaviour documented at <a href="https://serde.rs/data-model.html" target="_blank" rel="noopener">serde.rs/data-model</a>.',contentWhatIsP3:'Serde attributes are honoured. <code>#[serde(rename = "x")]</code> renames the JSON key, <code>#[serde(skip)]</code> removes the field, and <code>#[serde(flatten)]</code> lifts nested struct fields to the parent object. <code>enum</code> types follow the externally-tagged representation by default (configurable with <code>#[serde(tag = "type")]</code>). Paste multiple structs at once and each one comes out as a top-level entry. If you are working with web services built on <a href="https://doc.rust-lang.org/" target="_blank" rel="noopener">the Rust standard library</a> plus axum/actix, this output drops straight into your integration tests.',contentHowToTitle:"How to use it",contentHowToIntro:"Three steps. Works the same whether you paste one struct literal or a full module with a dozen types.",step1Title:"Paste your Rust (or load the sample)",step1Desc:"Drop your Rust into the left editor as-is. A <strong>struct</strong>, a <strong>tuple struct</strong>, an <strong>enum</strong> with variants, <strong>multiple types</strong>, or <strong>nested Vec/Option/HashMap</strong> \u2014 all fine. Click <strong>Load Sample</strong> to see a realistic example first.",step1Note:'You do not need to remove <code>use</code> statements, lifetimes, or derive attributes. Leave the <a href="https://doc.rust-lang.org/reference/" target="_blank" rel="noopener">Rust syntax</a> as-is \u2014 the <a href="https://serde.rs/attributes.html" target="_blank" rel="noopener">serde attributes</a> are part of what the parser reads.',step2Title:"Hit Convert",step2Desc:"Click the green <strong>Convert</strong> button. The tool reads the Rust, preserves every struct and field, and emits the JSON in one pass. A short loading indicator runs while it works.",step3Title:"Copy the JSON",step3Desc:"The right panel fills with indented JSON. Copy it into a <code>reqwest</code> test, an axum integration test, your OpenAPI examples, or a <code>curl</code> command. No rebuild needed.",contentUseCasesTitle:"When this actually comes in handy",useCase1Title:"Web service fixtures",useCase1Desc:"You have an axum or actix request struct and need JSON for a test or a curl call. Paste the struct, grab the JSON, move on \u2014 no cargo cycle.",useCase2Title:"CLI config starters",useCase2Desc:"A clap-driven CLI with a Config struct. Convert it to a JSON template users can edit, without writing a custom <code>Default</code> impl just for docs.",useCase3Title:"Integration test seeds",useCase3Desc:"Turn the struct literals from your unit tests into JSON seed files for integration tests, mock servers, or embedded-database fixtures.",useCase4Title:"Docs that track the code",useCase4Desc:"Generate JSON examples for your README or OpenAPI spec straight from the real Rust types, so the docs
1stop drifting.",contentFaqTitle:"Common questions",faqs:[{question:"Do I need serde and serde_json in my Cargo.toml?",answer:"Not for this tool \u2014 it runs server-side and does not compile your code. For runtime use in your own app, serde with the <code>derive</code> feature plus serde_json is the standard combo."},{question:"Does it honour #[serde(rename)], #[serde(skip)], and #[serde(flatten)]?",answer:'Yes. <code>#[serde(rename = "x")]</code> renames the JSON key, <code>#[serde(skip)]</code> removes the field from output, and <code>#[serde(flatten)]</code> lifts nested struct fields to the parent \u2014 matching the serde field attributes documentation.'},{question:"How are Option, Vec, and HashMap handled?",answer:"<code>Option<T></code> with <code>None</code> becomes JSON <code>null</code>; with <code>Some(v)</code> it serializes the inner value. <code>Vec<T></code>, slices, and arrays become JSON arrays. <code>HashMap<String, V></code> and <code>BTreeMap<String, V></code> become JSON objects; maps with non-string keys have their keys stringified."},{question:"What about enums with variants?",answer:'By default, enum variants use the externally-tagged representation (<code>{ "VariantName": {...} }</code>). The <code>#[serde(tag = "type")]</code>, <code>#[serde(untagged)]</code>, and <code>#[serde(content = "data")]</code> attributes switch to internally-tagged, untagged, or adjacently-tagged \u2014 the tool reads those attributes and outputs accordingly.'},{question:"Is my code stored?",answer:"Your code is sent to the backend for conversion and is not persisted \u2014 we do not log the payload. Give sensitive code a review before pasting."},{question:"What if the Rust uses lifetimes or generics?",answer:"Lifetimes (<code>&'a str</code>) are ignored \u2014 JSON has no concept of them. Concrete generic types (<code>Vec<User></code>) work. Uninstantiated generics come out as <code>null</code>. Macros that expand to real syntax work; macros that rely on a proc-macro crate not visible here are treated as opaque."}],contentRelatedTitle:"Other tools you may need",contentRelatedIntro:"Rust to JSON is one piece of the puzzle. These pair well with it:",relatedTools:[{label:"Go to JSON",route:"/go-to-json/"},{label:"C++ to JSON",route:"/cpp-to-json/"},{label:"JSON Parser",route:"/"},{label:"JSON Validator",route:"/json-validator/"},{label:"JSON Formatter",route:"/json-formatter/"},{label:"JSON Fixer",route:"/json-fixer/"},{label:"JSON to YAML",route:"/json-to-yaml/"}]},C={en:$};var G=["editorLeft"],B=["editorRight"],Q=["splitter"];function X(p,a){p&1&&(i(0,"div",49)(1,"div",50),r(2,"Converting..."),t()())}function Y(p,a){if(p&1&&(i(0,"div",51)(1,"h3",52),r(2),t(),l(3,"p",53),t()),p&2){let n=a.$implicit;o(2),s(n.question),o(),c("innerHTML",n.answer,g)}}function K(p,a){if(p&1&&(i(0,"a",54)(1,"span"),r(2),t()()),p&2){let n=a.$implicit;c("routerLink",n.route),o(2),s(n.label)}}var F=class p{constructor(a,n,e,d,m,Z,ee){this.platformId=a;this.document=n;this.locale=e;this.codeToJsonService=d;this.titleService=m;this.metaService=Z;this.seoService=ee;this.t=C[e]??C.en,this.setupMetaTags()}editorLeft;editorRight;splitter;aceEditorLeft;aceEditorRight;isDragging=!1;leftPane=null;rightPane=null;initialX=0;containerWidth=0;isLoading=!1;t=C.en;setupMetaTags(){let a=`/${this.t.routePath}/`;this.seoService.setupSEO({title:this.t.metaTitle,description:this.t.metaDescription,keywords:this.t.keywords,url:a})}ngAfterViewInit(){_(this.platformId)&&setTimeout(()=>{this.initializeEditors(),this.initSplitter()},100)}initializeEditors(){if(typeof window>"u"||typeof ace>"u"){console.error("Ace editor is not loaded");return}this.aceEditorLeft=ace.edit(this.editorLeft.nativeElement),this.aceEditorLeft.setTheme("ace/theme/github"),this.aceEditorLeft.session.setMode("ace/mode/rust"),this.aceEditorLeft.setOptions({fontSize:"14px",showPrintMargin:!1,showGutter:!0,highlightActiveLine:!0,enableBasicAutocompletion:!0,enableLiveAutocompletion:!0,useWrapMode:!0,showLineNumbers:!0,displayIndentGuides:!0}),this.aceEditorLeft.session.setUseWrapMode(!0),this.aceEditorLeft.session.setOption("wrap","free"),this.aceEditorRight=ace.edit(this.editorRight.nativeElement),this.aceEditorRight.setTheme("ace/theme/github"),this.aceEditorRight.session.setMode("ace/mode/json"),this.aceEditorRight.setOptions({fontSize:"14px",showPrintMargin:!1,showGutter:!0,highlightActiveLine:!1,enableBasicAutocompletion:!1,enableLiveAutocompletion:!1,useWrapMode:!0,showLineNumbers:!0,displayIndentGuides:!0}),this.aceEditorRight.session.setUseWrapMode(!0),this.aceEditorRight.session.setOption("wrap","free"),this.aceEditorRight.setReadOnly(!0)}initSplitter(){_(this.platformId)&&(this.leftPane=this.splitter.nativeElement.previousElementSibling,this.rightPane=this.splitter.nativeElement.nextElementSibling,this.splitter.nativeElement.addEventListener("mousedown",a=>this.startDrag(a)),document.addEventListener("mousemove",a=>this.onMouseMove(a)),document.addEventListener("mouseup",()=>this.onMouseUp()),document.addEventListener("selectstart",a=>this.preventSelection(a)))}startDrag(a){this.isDragging=!0,this.initialX=a.clientX,this.containerWidth=this.splitter.nativeElement.parentNode.offsetWidth,this.leftPane&&(this.leftPane.style.userSelect="none",this.leftPane.style.pointerEvents="none"),this.rightPane&&(this.rightPane.style.userSelect="none",this.rightPane.style.pointerEvents="none"),document.body.style.cursor="col-resize"}onMouseMove(a){if(!this.isDragging)return;let n=a.clientX-this.initialX,e=((this.leftPane?.offsetWidth||0)+n)/this.containerWidth*100,d=100-e;e>10&&d>10&&(this.leftPane&&(this.leftPane.style.flex=`0 0 ${e}%`),this.rightPane&&(this.rightPane.style.flex=`0 0 ${d}%`),this.initialX=a.clientX,this.aceEditorLeft&&this.aceEditorLeft.resize(),this.aceEditorRight&&this.aceEditorRight.resize())}onMouseUp(){this.isDragging=!1,this.leftPane&&(this.leftPane.style.userSelect="",this.leftPane.style.pointerEvents=""),this.rightPane&&(this.rightPane.style.userSelect="",this.rightPane.style.pointerEvents=""),document.body.style.cursor=""}preventSelection(a){return this.isDragging?(a.preventDefault(),!1):!0}loadSample(){this.aceEditorLeft.setValue(`use serde::Serialize; 2 3#[derive(Serialize)] 4struct OrderItem { 5 sku: String,
6 qty: u32, 7 price: f64, 8} 9 10#[derive(Serialize)] 11struct Address { 12 street: String, 13 city: String, 14 country: String, 15} 16 17#[derive(Serialize)] 18struct Order { 19 #[serde(rename = "order_id")] 20 order_id: String, 21 customer_name: String, 22 total_amount: f64, 23 is_paid: bool, 24 items: Vec<OrderItem>, 25 shipping_address: Address, 26 notes: Option<String>, 27} 28 29fn main() { 30 let order = Order { 31 order_id: String::from("ORD-4821"), 32 customer_name: String::from("Ava Chen"), 33 total_amount: 249.99, 34 is_paid: true, 35 items: vec![ 36 OrderItem { sku: String::from("SKU-101"), qty: 2, price: 49.99 }, 37 OrderItem { sku: String::from("SKU-202"), qty: 1, price: 150.01 }, 38 ], 39 shipping_address: Address { 40 street: String::from("221B Baker Street"), 41 city: String::from("London"), 42 country: String::from("UK"), 43 }, 44 notes: None, 45 }; 46}`,-1),this.aceEditorRight.setValue("",-1)}convert(){let a=this.aceEditorLeft.getValue().trim();if(!a){this.aceEditorRight.setValue("Please paste Rust code to convert",-1);return}this.aceEditorRight.setValue("",-1),this.isLoading=!0,this.codeToJsonService.convert(a,"Rust").subscribe(n=>{if(this.isLoading=!1,n?.is_valid&&n?.json_output)this.aceEditorRight.setValue(n.json_output,-1);else if(n?.error&&n?.raw_output){let e=n.parse_error?` 47 48(Parser said: ${n.parse_error})`:"";this.aceEditorRight.setValue(`${n.error}${e} 49 50--- Raw AI output (copy and fix manually if needed) --- 51 52${n.raw_output}`,-1)}else if(n?.error)this.aceEditorRight.setValue(`Error: ${n.error}`,-1);else try{let e=typeof n=="string"?H(n):n;this.aceEditorRight.setValue(z(e,2),-1)}catch{this.aceEditorRight.setValue(n,-1)}},n=>{this.isLoading=!1;let e=n?.status||"unknown",d=n?.error?.error||n?.error?.details||n?.message||"Unknown error",m=typeof n?.error=="string"?n.error:JSON.stringify(n?.error,null,2);this.aceEditorRight.setValue(`Request failed (HTTP ${e}). 53 54${d} 55 56--- Full error payload (for debugging) --- 57${m}`,-1)})}static \u0275fac=function(n){return new(n||p)(u(P),u(T),u(j),u(U),u(L),u(I),u(q))};static \u0275cmp=y({type:p,selectors:[["app-rust-to-json"]],viewQuery:function(n,e){if(n&1&&(f(G,5),f(B,5),f(Q,5)),n&2){let d;b(d=v())&&(e.editorLeft=d.first),b(d=v())&&(e.editorRight=d.first),b(d=v())&&(e.splitter=d.first)}},decls:112,vars:34,consts:[["editorLeft",""],["splitter",""],["editorRight",""],[1,"page-header"],[1,"header-content"],[1,"header-text"],[1,"page-title"],[1,"page-description"],[1,"header-ad"],[1,"paddingLeftRight"],[1,"card"],[1,"card-header","d-flex","justify-content-between","align-items-center"],[1,"fw-bold"],[1,"d-none","d-md-inline",3,"innerHTML"],[1,"d-inline","d-md-none"],[1,"action-buttons"],[1,"btn","btn-sm","btn-dark",3,"click"],[1,"fas","fa-file-code"],[1,"btn","btn-sm","btn-success",2,"background-color","#047a04",3,"click"],[1,"card-body","p-0"],[1,"split-container",2,"height","100%","position","relative"],[1,"json-input-container"],[1,"editor",2,"height","100%","width","100%"],["id","splitter",1,"splitter"],[1,"json-output-container"],["class","split-loading",4,"ngIf"],[1,"content-section"],[1,"container-fluid","px-4","py-5"],[1,"content-block","mb-5"],[1,"content-heading"],[1,"content-text",3,"innerHTML"],[1,"content-text","mb-4"],[1,"steps-container"],[1,"step-item"],[1,"step-number"],[1,"step-content"],[1,"step-title"],[1,"step-description",3,"innerHTML"],[1,"step-description","mt-2",3,"innerHTML"],[1,"row","g-4"],[1,"col-md-6"],[1,"use-case-card"],[1,"use-case-title"],[1,"use-case-text"],[1,"faq-container"],["class","faq-item",4,"ngFor","ngForOf"],[1,"content-block"],[1,"related-tools-grid"],["class","tool-link",3,"routerLink",4,"ngFor","ngForOf"],[1,"split-loading"],[1,"shimmer-status"],[1,"faq-item"],[1,"faq-question"],[1,"faq-answer",3,"innerHTML"],[1,"tool-link",3,"routerLink"]],template:function(n,e){if(n&1){let d=w();i(0,"div",3)(1,"div",4)(2,"div",5)(3,"h1",6),r(4),t(),i(5,"p",7),r(6),t()(),i(7,"div",8),l(8,"app-google-compact-ad"),t()()(),i(9,"div",9)(10,"div",10)(11,"div",11)(12,"span",12),l(13,"span",13),i(14,"span",14),r(15),t()(),i(16,"div",15)(17,"button",16),M("click",function(){return x(d),O(e.loadSample())}),l(18,"i",17),r(19),t(),i(20,"button",18),M("click",function(){return x(d),O(e.convert())}),r(21),t()()(),i(22,"div",19)(23,"div",20)(24,"div",21),l(25,"div",22,0),t(),l(27,"div",23,1),i(29,"div",24),l(30,"div",22,2),t(),h(32,X,3,0,"div",25),t()()()(),i(33,"div",26)(34,"div",27)(35,"section",28)(36,"h2",29),r(37),t(),l(38,"p",30)(39,"p",30)(40,"p",30),t(),l(41,"app-google-display-ad-horizontal1"),i(42,"section",28)(43,"h2",29),r(44),t(),i(45,"p",31),r(46),t(),i(47,"div",32)(48,"div",33)(49,"div",34),r(50,"1"),t(),i(51,"div",35)(52,"h3",36),r(53),t(),l(54,"p",37)(55,"p",38),t()(),i(56,"div",33)(57,"div",34),r(58,"2"),t(),i(59,"div",35)(60,"h3",36),r(61),t(),l(62,"p",37),t()(),i(63,"div",33)(64,"div",34),r(65,"3"),t(),i(66,"div",35)(67,"h3",36),r(68),t(),l(69,"p",37),t()()()(),l(70,"app-google-display-ad-horizontal2"),i(71,"section",28)(72,"h2",29),r(73),t(),i(74,"div",39)(75,"div",40)(76,"div",41)(77,"h3",42),r(78),t(),i(79,"p",43),r(80),t()()(),i(81,"div",40)(82,"div",41)(83,"h3",42),r(84),t(),i(85,"p",43),r(86),t()()(),i(87,"div",40)(88,"div",41)(89,"h3",42),r(90),t(),i(91,"p",43),r(92),t()()(),i(93,"div",40)(94,"div",41)(95,"h3",42),r(96),t(),i(97,"p",43),r(98),t()()()()(),l(99,"app-google-display-ad-horizontal3"),i(100,"section",28)(101,"h2",29),r(102),t(),i(103,"div",44),h(104,Y,4,2,"div",45),t()(),i(105,"section",46)(106,"h2",29),r(107),t(),i(108,"p",31),r(109),t(),i(110,"div",47),h(111,K,3,2,"a",48),t()()()()}
57n&2&&(o(4),s(e.t.pageHeading),o(2),s(e.t.pageSubheading),o(7),c("innerHTML",e.t.toolbarHint,g),o(2),s(e.t.toolbarHintShort),o(4),S(" ",e.t.sample," "),o(2),s(e.t.convert),o(11),c("ngIf",e.isLoading),o(5),s(e.t.contentWhatIsTitle),o(),c("innerHTML",e.t.contentWhatIsP1,g),o(),c("innerHTML",e.t.contentWhatIsP2,g),o(),c("innerHTML",e.t.contentWhatIsP3,g),o(4),s(e.t.contentHowToTitle),o(2),s(e.t.contentHowToIntro),o(7),s(e.t.step1Title),o(),c("innerHTML",e.t.step1Desc,g),o(),c("innerHTML",e.t.step1Note,g),o(6),s(e.t.step2Title),o(),c("innerHTML",e.t.step2Desc,g),o(6),s(e.t.step3Title),o(),c("innerHTML",e.t.step3Desc,g),o(4),s(e.t.contentUseCasesTitle),o(5),s(e.t.useCase1Title),o(2),s(e.t.useCase1Desc),o(4),s(e.t.useCase2Title),o(2),s(e.t.useCase2Desc),o(4),s(e.t.useCase3Title),o(2),s(e.t.useCase3Desc),o(4),s(e.t.useCase4Title),o(2),s(e.t.useCase4Desc),o(4),s(e.t.contentFaqTitle),o(2),c("ngForOf",e.t.faqs),o(3),s(e.t.contentRelatedTitle),o(2),s(e.t.contentRelatedIntro),o(2),c("ngForOf",e.t.relatedTools))},dependencies:[R,E,k,N,J,W,D,V,A],styles:['.container-fluid[_ngcontent-%COMP%]{border-radius:12px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;transition:box-shadow .3s ease;overflow:hidden}[_nghost-%COMP%] .page-header{margin-left:16px!important;margin-right:16px!important}.card[_ngcontent-%COMP%]{border:1px solid rgba(0,0,0,.1);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;transition:box-shadow .3s ease;height:calc(100vh - 200px);min-height:300px;display:flex;flex-direction:column;margin-bottom:1rem}.card[_ngcontent-%COMP%]:hover{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.card-header[_ngcontent-%COMP%]{background-color:#f8f9fa;border-bottom:1px solid rgba(0,0,0,.1);padding:12px 15px}.card-body[_ngcontent-%COMP%]{padding:0;background-color:#fff;flex:1;min-height:0}.split-container[_ngcontent-%COMP%]{display:flex;height:100%;background-color:#fff}.json-input-container[_ngcontent-%COMP%]{position:relative;background-color:#f8f9fa;transition:background-color .3s ease;display:flex;flex-direction:column}.json-input-container[_ngcontent-%COMP%]{flex:0 0 25%;border-right:1px solid rgba(0,0,0,.1)}.json-output-container[_ngcontent-%COMP%]{flex:1 1 auto}.editor[_ngcontent-%COMP%]{position:relative;flex:1;width:100%;min-height:100%}.error-bar[_ngcontent-%COMP%]{position:absolute;bottom:0;left:0;right:0;padding:8px 12px;background-color:#dc35450d;border-top:1px solid rgba(220,53,69,.1);z-index:1;animation:_ngcontent-%COMP%_slideUp .3s ease}@keyframes _ngcontent-%COMP%_slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.error-message[_ngcontent-%COMP%]{color:#dc3545;font-size:.875rem;display:flex;align-items:center;gap:.5rem;opacity:.9}.error-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:1rem}.splitter[_ngcontent-%COMP%]{width:8px;background-color:#dee2e6;cursor:col-resize;position:relative;transition:background-color .2s ease;border-left:1px solid #ced4da;border-right:1px solid #ced4da}.splitter[_ngcontent-%COMP%]:hover{background-color:#e9ecef}.splitter[_ngcontent-%COMP%]:before, .splitter[_ngcontent-%COMP%]:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:2px;height:20px;background-color:#adb5bd;border-radius:3px}.splitter[_ngcontent-%COMP%]:before{margin-left:-1px}.splitter[_ngcontent-%COMP%]:after{margin-left:1px}.splitter.dragging[_ngcontent-%COMP%]{background-color:#e9ecef}@media (max-width: 768px){.card[_ngcontent-%COMP%]{height:calc(100vh - 180px)}.splitter[_ngcontent-%COMP%]{width:100%;height:16px;cursor:row-resize;border-left:none;border-right:none;border-top:2px solid #ced4da;border-bottom:2px solid #ced4da}.splitter[_ngcontent-%COMP%]:before, .splitter[_ngcontent-%COMP%]:after{height:2px;width:20px}.splitter[_ngcontent-%COMP%]:before{margin-left:-1px;margin-top:-1px}.splitter[_ngcontent-%COMP%]:after{margin-left:1px;margin-top:1px}.split-container[_ngcontent-%COMP%]{flex-direction:column}.json-input-container[_ngcontent-%COMP%], .json-output-container[_ngcontent-%COMP%]{flex:0 0 50%!important}}.table-output-container[_ngcontent-%COMP%]{flex:1 1 auto;overflow:hidden;background-color:#fff}.table-container[_ngcontent-%COMP%]{height:100%;overflow:auto;padding:15px}.table[_ngcontent-%COMP%]{width:100%;margin-bottom:1rem;border-collapse:separate;border-spacing:0;background-color:#fff;border:2.5px solid #564b4b;box-shadow:1px 5px 5px #878686;transition:all .3s ease;overflow:hidden;border-radius:0}.table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border:1px solid #564b4b}.table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{border-bottom:2.5px solid #564b4b;font-weight:700}.table[_ngcontent-%COMP%] .table[_ngcontent-%COMP%]{margin:4px 0;box-shadow:none;border:2px solid #000}.table[_ngcontent-%COMP%]:hover{box-shadow:1px 7px 7px #878686}.table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:first-child, .table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:last-child, .table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%]:first-child, .table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%]:last-child{border-radius:0}.table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:10px 14px;border:1px solid #000;vertical-align:top;transition:background-color .2s ease}.nested-key[_ngcontent-%COMP%]{font-weight:500;color:#212529;
57width:200px;background-color:#f8f9fa}.table[_ngcontent-%COMP%] .table[_ngcontent-%COMP%]{background-color:#f8f9fa;border:3px solid #000;margin:4px 0}.table[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] .table[_ngcontent-%COMP%]{background-color:#f1f3f5;border:4px solid #000}.table[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] .table[_ngcontent-%COMP%]{background-color:#e9ecef;border:5px solid #000}.table[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] .table[_ngcontent-%COMP%] .table[_ngcontent-%COMP%]{background-color:#dee2e6;border:6px solid #000}.table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:inline-block;padding:4px 8px;background-color:#f8f9fa;border-radius:4px;margin:2px;transition:background-color .2s ease}.table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:hover{background-color:#e9ecef}.no-data[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;height:200px;color:#6c757d;text-align:center;background-color:#f8f9fa;padding:1rem;border-radius:8px;font-size:.95rem}.ace_editor[_ngcontent-%COMP%]{font-family:Monaco,Menlo,Ubuntu Mono,Consolas,source-code-pro,monospace;font-size:14px;line-height:1.4;background-color:#f8f9fa}[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px;height:8px}[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#888;border-radius:4px}[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:#555}.fix-text[_ngcontent-%COMP%]{color:#32c832;font-weight:700}.paddingLeftRight[_ngcontent-%COMP%]{padding-right:5px;padding-left:12px}@media (min-width: 768px){.paddingLeftRight[_ngcontent-%COMP%]{padding-left:1rem;padding-right:1rem}}.containerPadding[_ngcontent-%COMP%]{padding-left:30px;padding-right:30px}.nested-table[_ngcontent-%COMP%]{width:100%;background-color:transparent;border:1px solid #dee2e6;margin:2px 0}.nested-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:.4rem .75rem!important;border:1px solid #dee2e6!important}.nested-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{padding:.5rem .75rem!important;border:1px solid #dee2e6!important;background-color:#f8f9fa;font-weight:600;font-size:.9em}.nested-table[_ngcontent-%COMP%] .nested-table[_ngcontent-%COMP%]{background-color:#fcfcfc;margin:4px 0}.nested-table[_ngcontent-%COMP%] .nested-table[_ngcontent-%COMP%] .nested-table[_ngcontent-%COMP%]{background-color:#fefefe}.table-container[_ngcontent-%COMP%] > .table[_ngcontent-%COMP%]{margin-bottom:0;border-collapse:separate;border-spacing:0;background-color:#f8f9fa;border:2px solid black}.table-container[_ngcontent-%COMP%] > .table[_ngcontent-%COMP%] > thead[_ngcontent-%COMP%] > tr[_ngcontent-%COMP%] > th[_ngcontent-%COMP%]{border:1px solid black;padding:.75rem;font-weight:600}.table-container[_ngcontent-%COMP%] > .table[_ngcontent-%COMP%] > tbody[_ngcontent-%COMP%] > tr[_ngcontent-%COMP%] > td[_ngcontent-%COMP%]{border:1px solid black;padding:.75rem;vertical-align:top}.table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] .table[_ngcontent-%COMP%]{margin:4px 0}#tableModal[_ngcontent-%COMP%] .btn-close[_ngcontent-%COMP%]{filter:invert(1) brightness(1.5)}#tableModal.modal-dialog-scrollable[_ngcontent-%COMP%] .modal-content[_ngcontent-%COMP%], #tableModal[_ngcontent-%COMP%] .modal-dialog.modal-dialog-scrollable[_ngcontent-%COMP%] .modal-content[_ngcontent-%COMP%]{max-height:none!important}#tableModal[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%]{overflow-y:auto!important}.split-loading[_ngcontent-%COMP%]{position:absolute;inset:0;background:linear-gradient(110deg,#f8f9fa80 20%,#fffffff2,#f8f9fa80 80%);background-size:200% 100%;animation:_ngcontent-%COMP%_shimmer-sweep 1.8s linear infinite;display:flex;justify-content:center;align-items:center;z-index:1000}@keyframes _ngcontent-%COMP%_shimmer-sweep{0%{background-position:200% 0}to{background-position:-200% 0}}.shimmer-status[_ngcontent-%COMP%]{background:#fffffff5;padding:12px 24px;border-radius:24px;font-size:14px;color:#212529;font-weight:500;box-shadow:0 4px 16px #0000001f;display:flex;align-items:center;gap:10px}.shimmer-status[_ngcontent-%COMP%]:before{content:"";width:8px;height:8px;border-radius:50%;background:#047a04;animation:_ngcontent-%COMP%_status-pulse 1.2s ease-in-out infinite}@keyframes _ngcontent-%COMP%_status-pulse{0%,to{opacity:1;transform:scale(1);box-shadow:0 0 #047a0480}50%{opacity:.7;transform:scale(1.2);box-shadow:0 0 0 6px #047a0400}}.invalid-json-message[_ngcontent-%COMP%]{padding:20px;
57display:flex;justify-content:center;align-items:center;min-height:100px}.basic-message[_ngcontent-%COMP%]{background-color:#f5f5f5;border:1px solid #e0e0e0;padding:12px 16px;border-radius:4px;color:#666;font-size:14px}']})};export{F as RustToJsonComponent};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.