簡體   English   中英

Solana Rust 程序 BTreeMap

[英]Solana Rust program BTreeMap

我在這里閱讀了這篇文章,我了解到 HashMap 在 Solana 中不可用,因此我需要使用 BTreeMap。 我是 Rust 的初學者,在嘗試從以太坊遷移到 Solana 時出現以下代碼錯誤:

pub fn constructor (
   let mut DomainsToIndex = BTreeMap::new();
   Domains[] pub DomainList;
   
   contractOwner = msg.sender;
   firstDomain.name = "empty";
   firstDomain.IP = "n/a";
   firstDomain.owner = 0;
   firstDomain.lockTime = 0;
   firstDomain.infoDocumentHash = "n/a";

   DomainsToIndex.insert(String::from(firstDomain.name), 0);
   DomainList.push(firstDomain);
) -> ProgramResult {
   msg!("First domain was added by default");
   Ok(())
} 

我當然在文件頂部添加了導入:

use std::collections::BTreeMap;

根據下圖,我在使用cargo build時收到的錯誤如下:

貨物 BTreeMap 錯誤

我想我做的不對,因為我是 Rust 的新手,你能幫忙嗎?

謝謝。

代碼有幾個語法問題。 應用程序 arguments 應該與正文分開,沒有結構的pub也沒有意義。

不幸的是,他們的 Rust 接口的文檔非常缺乏(似乎主要是“看看一些示例,然后通過反復試驗找出 rest”)。 所以我無法查找足夠的信息來建議一個合理正確的版本。

這里還有幾個指針:

  • 目前尚不清楚這個 function 的輸入是什么。 您正在引用帶有sender成員的msg object,但我可以識別的唯一等效項是標識調用帳戶的&[AccountInfo]參數。
  • 或者,Solana 程序接收指令數據的字節數組,顯然可以在其中編碼任何內容。

我建議從他們的Hello World示例開始,稍微玩一下,一旦您更熟悉 Rust 語法和 Solana 最佳實踐,就繼續使用您自己的應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM