- 
                Notifications
    
You must be signed in to change notification settings  - Fork 615
 
Open
Description
u128 won't parse inside of an untagged enum, whereas other unsigned variant does
#![allow(dead_code, unused_imports)]
use serde::Deserialize;
use serde_json;
fn main() {
    println!("--- Case 1: u64 inside untagged enum ---");
    test_order_resp_with_u64();
    println!("\n--- Case 2: u128 inside untagged enum ---");
    test_order_resp_with_u128();
    println!("\n--- Case 3: u128 in plain struct (no enum) ---");
    test_direct_u128_struct();
}
#[derive(Debug, Deserialize)]
#[serde(untagged)]
enum OrderRespU64 {
    Resting { resting: RestingOrderU64 },
    Error { error: String },
}
#[derive(Debug, Deserialize)]
#[serde(untagged)]
enum OrderRespU128 {
    Resting { resting: RestingOrderU128 },
    Error { error: String },
}
#[derive(Debug, Deserialize)]
struct RestingOrderU64 {
    oid: u64,
}
#[derive(Debug, Deserialize)]
struct RestingOrderU128 {
    oid: u128,
}
#[derive(Debug, Deserialize)]
struct WrapperU128Direct {
    resting: RestingOrderU128,
}
fn test_order_resp_with_u64() {
    let json = r#"{ "resting": { "oid": 77738308 } }"#;
    let result: Result<OrderRespU64, _> = serde_json::from_str(json);
    match result {
        Ok(v) => println!("[SUCCESS] u64 parsed: {:?}", v),
        Err(e) => eprintln!("[FAILURE] u64 parse failed: {}", e),
    }
}
fn test_order_resp_with_u128() {
    let json = r#"{ "resting": { "oid": 77738308 } }"#;
    let result: Result<OrderRespU128, _> = serde_json::from_str(json);
    match result {
        Ok(v) => println!("[SUCCESS] u128 in untagged parsed: {:?}", v),
        Err(e) => eprintln!("[FAILURE] u128 in untagged parse failed: {}", e),
    }
}
fn test_direct_u128_struct() {
    let json = r#"{ "resting": { "oid": 77738308 } }"#;
    let result: Result<WrapperU128Direct, _> = serde_json::from_str(json);
    match result {
        Ok(v) => println!("[SUCCESS] direct u128 struct parsed: {:?}", v),
        Err(e) => eprintln!("[FAILURE] direct u128 struct failed: {}", e),
    }
}mplanchard and baehyunsol
Metadata
Metadata
Assignees
Labels
No labels