Skip to content

Symbols deserialize incorrectly. #88

@bolli24

Description

@bolli24

When deserializing symbols from eg. JSON the resulting values are off by one.

Example:

use string_interner::{DefaultSymbol, StringInterner};

fn main() {
    let mut interner = StringInterner::default();
    let symbol = interner.get_or_intern("hello");

    let serialized = serde_json::to_string(&symbol).unwrap();
    println!("Original: {:?}, JSON: {}", symbol, serialized);

    let deserialized: DefaultSymbol = serde_json::from_str(&serialized).unwrap();
    println!("Deserialized: {:?}", deserialized);

    match interner.resolve(deserialized) {
        Some(s) => println!("Resolves to: {}", s),
        None => println!("Cannot resolve symbol!"),
    }
}

Expected Output:

Original: SymbolU32 { value: 1 }, JSON: 1
Deserialized: SymbolU32 { value: 1 }
Resolves to: hello

Actual Output

Original: SymbolU32 { value: 1 }, JSON: 1
Deserialized: SymbolU32 { value: 2 }
Cannot resolve symbol!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions