Я отлаживаю клиент Parity Ethereum с LLDB в VSCode и пытаюсь получить доступ к значению через несколько ссылок.
Вот код только с соответствующими частями (полный код здесь )
pub struct SignedTransaction {
transaction: UnverifiedTransaction,
sender: Address,
public: Option<Public>,
}
impl Deref for SignedTransaction {
type Target = UnverifiedTransaction;
fn deref(&self) -> &Self::Target {
&self.transaction
}
}
pub struct UnverifiedTransaction {
unsigned: Transaction,
v: u64,
r: U256,
s: U256,
hash: H256,
}
impl Deref for UnverifiedTransaction {
type Target = Transaction;
fn deref(&self) -> &Self::Target {
&self.unsigned
}
}
pub struct Transaction {
pub nonce: U256,
pub gas_price: U256,
pub gas: U256,
pub action: Action,
pub value: U256,
pub data: Bytes,
}
pub enum Action {
Create,
Call(Address),
}
У меня есть &SignedTransaction t
со значением t.action = Action::Create
(проверено вручную).
Я хочу получить значение action
, так как VSCode показываетвводящее в заблуждение значение:
VSCode, показывающее вводящее в заблуждение значение
Мне не удается вывести только значение action
, но команда p t.transaction
выводит это (усечено):
(ethcore_transaction::transaction::UnverifiedTransaction) $2 = {
unsigned = {
action = Call(((20) ['\', '!', '\xf6', '\xff', '\x7f', '\0', ...])) {
= Call(((20) ['\', '!', '\xf6', '\xff', '\x7f', '\0', ...])) {
RUST$ENUM$DISR = Create {...}
В случае, если t.action = Action::Call()
значение отображается правильно.
Почему оно не показывает action = Create
?Как я могу печатать более чисто action
значение?
РЕДАКТИРОВАТЬ: команда fr v t->transaction.unsigned.action.RUST$ENUM$DISR
показывает правильное значение перечисления.Однако я до сих пор не знаю, почему fr v t->transaction.unsigned.action
отображает неправильные значения (которые также отображаются в графическом интерфейсе).