# Rust SDK for The Open Network Rust SDK for [The Open Network](https://ton.org/) ## Features * Support parsing and generation of Cell and BagOfCell for more convenient interaction with data structures * Support of existing Wallet versions * Derive wallet address * Support of TON Mnemonics * NaCl-compatible Ed25519 signing of transactions ## Usage To use this library in your Rust application, add the following to your Cargo.toml file: ```toml [dependencies] tonlib-core = "0.20" ``` Then, in your Rust code, you can import the library with: ```rust use tonlib_core; ``` ## Package contents ### Cell Data structures and helpers for building and parsing Cell and Bag of Cells. See the documentation on [ton.org ](https://docs.ton.org/develop/data-formats/cell-boc)for details. ### Message Data structures, builders, and parsers for Message See the documentation on [ton.org ](https://docs.ton.org/develop/smart-contracts/messages)for details. Includes standard messages for Jetton, NFT, and Soulbound NFT, specified by [TON Enhancement Proposal](https://github.com/ton-blockchain/TEPs/blob/master/text/0001-tep-lifecycle.md). ### Mnemonic Data structure to store mnemonic. ### Types Data structures for storage and easy conversion of [Ton Smart-contract Address](https://docs.ton.org/learn/overviews/addresses) and [Ton Transaction Id](https://docs.ton.org/develop/data-formats/transaction-layout#transaction) ### Wallet Data structure for deriving wallet addresses. ## Usage examples ### Cell Creating a `Cell` and writing data to it: ``` rust use anyhow::anyhow; use tonlib_core::TonAddress; use tonlib_core::cell::CellBuilder; fn write_cell() -> anyhow::Result<()> { let mut writer = CellBuilder::new(); let addr = TonAddress::from_base64_url("EQDk2VTvn04SUKJrW7rXahzdF8_Qi6utb0wj43InCu9vdjrR")?; let cell = writer .store_u32(32, 0xFAD45AADu32)? .store_bit(true)? .store_u8(8, 234u8)? .store_slice(&[0xFA, 0xD4, 0x5A, 0xAD, 0xAA, 0x12, 0xFF, 0x45])? .store_address(&addr)? .store_string("Hello, TON")? .build()?; # Ok(()) } ``` Reading data from a `Cell`: ```rust use tonlib_core::cell::Cell; fn read_cell(cell: Cell) -> anyhow::Result<()> { let mut reader = cell.parser(); let u32_value = reader.load_u32(32)?; let bit_value = reader.load_bit()?; let u8_value = reader.load_u8(8)?; let bytes_value = reader.load_bytes(8)?; let address_value = reader.load_address()?; let str_value = reader.ensure_empty()?; Ok(()) } ```