[ https://issues.apache.org/jira/browse/THRIFT-5300?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Allen George updated THRIFT-5300: --------------------------------- Comment: was deleted (was: I'm closing this out because it's a bug in the spec, not a bug in the implementation.) > rs compact protocol collection elem type to ttype mapping wrong > --------------------------------------------------------------- > > Key: THRIFT-5300 > URL: https://issues.apache.org/jira/browse/THRIFT-5300 > Project: Thrift > Issue Type: Bug > Components: Rust - Library > Affects Versions: 0.13.0 > Reporter: shuo li > Assignee: Allen George > Priority: Major > > collection_u8_to_type only overrides bool, but in spec, other types are > different too. > In field: > * {{BOOLEAN_TRUE}}, encoded as {{1}} > * {{BOOLEAN_FALSE}}, encoded as {{2}} > * {{BYTE}}, encoded as {{3}} > * {color:#FF0000}{{I16}}, encoded as {{4}}{color} > * {color:#FF0000}{{I32}}, encoded as {{5}}{color} > * {{I64}}, encoded as {{6}} > * {{DOUBLE}}, encoded as {{7}} > * {{BINARY}}, used for binary and string fields, encoded as {{8}} > * {{LIST}}, encoded as {{9}} > * {{SET}}, encoded as {{10}} > * {{MAP}}, encoded as {{11}} > * {{STRUCT}}, used for both structs and union fields, encoded as {{12}} > In colleciton: > * {{BOOL}}, encoded as {{2}} > * {{BYTE}}, encoded as {{3}} > * {{DOUBLE}}, encoded as {{4}} > * {color:#FF0000}{{I16}}, encoded as {{6}}{color} > * {color:#FF0000}{{I32}}, encoded as {{8}}{color} > * {{I64}}, encoded as {{10}} > * {{STRING}}, used for binary and string fields, encoded as {{11}} > * {{STRUCT}}, used for structs and union fields, encoded as {{12}} > * {{MAP}}, encoded as {{13}} > * {{SET}}, encoded as {{14}} > * {{LIST}}, encoded as {{15}} > {code:java} > // code placeholder > fn collection_u8_to_type(b: u8) -> crate::Result<TType> { > match b { > 0x01 => Ok(TType::Bool), > o => u8_to_type(o), > } > } > fn u8_to_type(b: u8) -> crate::Result<TType> { > match b { > 0x00 => Ok(TType::Stop), > 0x03 => Ok(TType::I08), // equivalent to TType::Byte > 0x04 => Ok(TType::I16), > 0x05 => Ok(TType::I32), > 0x06 => Ok(TType::I64), > 0x07 => Ok(TType::Double), > 0x08 => Ok(TType::String), > 0x09 => Ok(TType::List), > 0x0A => Ok(TType::Set), > 0x0B => Ok(TType::Map), > 0x0C => Ok(TType::Struct), > unkn => Err(crate::Error::Protocol(crate::ProtocolError { > kind: crate::ProtocolErrorKind::InvalidData, message: > format!("cannot convert {} into TType", unkn), > })), > }} > {code} > -- This message was sent by Atlassian Jira (v8.3.4#803005)