Skip to content

Latest commit

 

History

History
82 lines (60 loc) · 2.21 KB

File metadata and controls

82 lines (60 loc) · 2.21 KB

Implementation Summary: format_group_id Helper Function

Task Completed ✅

What Was Implemented

A helper function format_group_id that formats group IDs for display with a "GROUP-" prefix.

Files Created/Modified

  1. Created: contracts/stellar-save/src/helpers.rs

    • New module containing the format_group_id function
    • Includes comprehensive documentation
    • Contains 4 unit tests covering edge cases
  2. Modified: contracts/stellar-save/src/lib.rs

    • Added pub mod helpers; declaration
    • Added pub use helpers::format_group_id; export
  3. Created: HELPER_USAGE.md

    • Usage documentation and examples

Function Details

Signature:

pub fn format_group_id(env: &Env, group_id: u64) -> String

Features:

  • Converts numeric group ID to formatted string
  • Adds "GROUP-" prefix
  • Works in no_std environment (Soroban compatible)
  • Handles all u64 values including edge cases

Examples:

format_group_id(&env, 1)     // Returns: "GROUP-1"
format_group_id(&env, 42)    // Returns: "GROUP-42"
format_group_id(&env, 12345) // Returns: "GROUP-12345"

Tests Included

  1. test_format_group_id_single_digit - Single digit input
  2. test_format_group_id_multi_digit - Multi-digit input
  3. test_format_group_id_zero - Zero edge case
  4. test_format_group_id_max_value - Maximum u64 value

Implementation Approach

The function uses Soroban SDK's Bytes type to build the string:

  1. Converts u64 to individual digit bytes
  2. Constructs "GROUP-" prefix as bytes
  3. Concatenates prefix and digits
  4. Converts to Soroban String

This approach avoids std library dependencies and works within Soroban's no_std environment.

Verification

The code compiles successfully:

cargo check --lib  # ✅ No errors in helpers module

Usage

Import and use in your contract:

use stellar_save::format_group_id;

// In any contract function
let formatted = format_group_id(&env, group_id);

Notes

  • The implementation is minimal and efficient
  • No external dependencies beyond soroban-sdk
  • Fully documented with rustdoc comments
  • Ready for integration into contract functions
  • Can be used for logging, events, or display purposes