1、windows下载安装rust
Getting started - Rust Programming Language
https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe
下载rustup-init.exe,并安装。
2、把cargo的bin目录添加到系统path 中,默认这个文件夹路径为“C:\Users\用户名\.cargo\bin”
在cmd中输入rustc --version 和cargo --version,若正常返回版本信息,则安装成功

3、安装near-cli 工具包:
执行“npm install -g near-cli”命令

执行 “near --version”验证是否安装成功

参考文档 :https://docs.near.org/zh-CN/docs/tools/near-cli
4、执行cargo hello命令创建一个项目,然后进入hello目录执行cargo run ,若报错
我的解决办法比较暴力,直接装了一个Visual Studio 2022 ,注意在安装的时候要把Visual C++ 选上。
Visual Studio 2022 下载地址:Visual Studio 2022 IDE - 适用于软件开发人员的编程工具
安装重启之后重新执行成功

参考文章:win10安装rust和编译失败的解决办法 - 走看看
5、Jetbrains Idea 安装 Rust 插件,具体参考下面文章
https://www.youkuaiyun.com/tags/OtDaYgxsMTIzMTctYmxvZwO0O0OO0O0O.html
重新进入idea,新建rust项目,这次打开的时候Standard library 下面会有一个安装提示,直接点击安装就行,然后后面就会有一个目录路径了。

6、如果报错“No Cargo projects found!”,可以参考下面文章解决:
Rust编写Near智能合约_盐水煮毛豆的博客-优快云博客_rust 智能合约
或者使用“$ cargo init --lib 合约名称” 命令直接从命令行创建一个工程模板,再用鼠标右键再jetbrain idea 中打开即可。
7、编写完代码和 测试案例之后,可以在改工程目录命令行中输入“cargo test -- --nocapture”,进行测试
输入以上格式内容,则表示成功。
编译合约
windows 下使用“set RUSTFLAGS=-C link-arg=-s”和“cargo build --target wasm32-unknown-unknown --release”命令编译

near测试链登录
near login
若报错以下内容,证明是windows cmd 没有翻墙
通过这种方式修改即可
环境:shadowsocks、windows 本地ss端口设置(这里1080) cmd命令行:(不用socks5)(临时设置)(也可放置环境变量) set HTTP_PROXY=http://127.0.0.1:1080 set HTTPS_PROXY=http://127.0.0.1:1080 ps:一定要用cmd命令行,千万别用powershell !!! 简易测试命令:curl https://www.google.com(别用ping) git config --global https.proxy http://127.0.0.1:1080 git config --global https.proxy https://127.0.0.1:1080
但是上面解决方案行不通,通过在开发群中咨询得知“官方的rpc被强了,命令行不会使用代理。可以在infura上面注册一个near的rpc节点然后使 --nodeUrl参数使用指定节点”
near login --nodeUrl https://near-testnet.infura.io/v3/7102961aa7c04b1c8dbfe6d456d3fc86
near create-account learn01.lentel.testnet --masterAccount lentel.testnet --initialBalance 100 --nodeUrl https://near-testnet.infura.io/v3/7102961aa7c04b1c8dbfe6d456d3fc86
near create-account learn02.lentel.testnet --masterAccount lentel.testnet --initialBalance 10 --nodeUrl https://near-testnet.infura.io/v3/7102961aa7c04b1c8dbfe6d456d3fc86

一开始尝试:near create-account near.learn01.lentel.testnet --masterAccount lentel.testnet --initialBalance 100 --nodeUrl https://near-testnet.infura.io/v3/7102961aa7c04b1c8dbfe6d456d3fc86
报错,估计是有可能是near.learn01.lentel.testnet 命名规则不对,去掉near. 就可以了
另外,在执行这个命令的时候,会从masterAccount 往 新建账户自动转账 --initialBalance 后面对应数目的near , 如果master账户中near 不足,则会报错
Error: Sender lentel.testnet does not have enough balance 99.997684888406378 for operation costing 100.0000861846776875 at Object.parseRpcError (C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\utils\rpc_errors.js:24:19) at C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\providers\json-rpc-provider.js:319:44 at processTicksAndRejections (node:internal/process/task_queues:96:5) at async Object.exponentialBackoff [as default] (C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\utils\exponential-backoff.js:7:24) at async JsonRpcProvider.sendJsonRpc (C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\providers\json-rpc-provider.js:304:26) at async C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\account.js:121:24 at async Object.exponentialBackoff [as default] (C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\utils\exponential-backoff.js:7:24) at async Account.signAndSendTransactionV2 (C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\account.js:117:24) at async LocalAccountCreator.createAccount (C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\account_creator.js:24:9) at async Near.createAccount (C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\near.js:69:9) ServerError: Sender lentel.testnet does not have enough balance 99.997684888406378 for operation costing 100.0000861846776875 at Object.parseRpcError (C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\utils\rpc_errors.js:24:19) at C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\providers\json-rpc-provider.js:319:44 at processTicksAndRejections (node:internal/process/task_queues:96:5) at async Object.exponentialBackoff [as default] (C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\utils\exponential-backoff.js:7:24) at async JsonRpcProvider.sendJsonRpc (C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\providers\json-rpc-provider.js:304:26) at async C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\account.js:121:24 at async Object.exponentialBackoff [as default] (C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\utils\exponential-backoff.js:7:24) at async Account.signAndSendTransactionV2 (C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\account.js:117:24) at async LocalAccountCreator.createAccount (C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\account_creator.js:24:9) at async Near.createAccount (C:\Users\86185\AppData\Roaming\npm\node_modules\near-cli\node_modules\near-api-js\lib\near.js:69:9) { type: 'NotEnoughBalance', context: ErrorContext { transactionHash: '4Ef9T7eFybaeYQfMJtNyZYJWV8mxHh4JDp2H9nQdDem3' }, balance: '99997684888406378000000000', cost: '100000086184677687500000000', signer_id: 'lentel.testnet', kind: { balance: '99997684888406378000000000', cost: '100000086184677687500000000', signer_id: 'lentel.testnet' } }
部署合约
near deploy --wasmFile target/wasm32-unknown-unknown/release/key_value_storage.wasm --accountId learn01.lentel.testnet --nodeUrl https://near-testnet.infura.io/v3/7102961aa7c04b1c8dbfe6d456d3fc86

Options: --help Show help [boolean] --version Show version number [boolean] --nodeUrl, --node_url NEAR node URL [string] [default: "https://rpc.testnet.near.org"] --networkId, --network_id NEAR network ID, allows using different keys based on network [string] [default: "testnet"] --helperUrl NEAR contract helper URL [string] --keyPath Path to master account key [string] --accountId, --account_id Unique identifier for the newly created account [string] [required] --useLedgerKey Use Ledger for signing with given HD key path [string] [default: "44'/397'/0'/0'/1'"] --seedPhrase Seed phrase mnemonic [string] --seedPath HD path derivation [string] [default: "m/44'/397'/0'"] --walletUrl Website for NEAR Wallet [string] --contractName Account name of contract [string] --masterAccount Account used to create requested account. [string] [required] --helperAccount Expected top-level account for a network [string] -v, --verbose Prints out verbose output [boolean] [default: false] -f, --force Forcefully execute the desired action even if it is unsafe to do so [boolean] [default: false] --publicKey Public key to initialize the account with [string] --newLedgerKey HD key path to use with Ledger. Used to generate public key if not specified directly [string] [default: "44'/397'/0'/0'/1'"] --initialBalance Number of tokens to transfer to newly created account [string] [default: "100"]
调用合约
–accountId 你的near 账户
1.创建键值对 调用合约create_update方法
near call learn01.lentel.testnet create_update '{"k": "first_key", "v" : "1"}' --accountId learn01.lentel.testnet --nodeUrl https://near-testnet.infura.io/v3/7102961aa7c04b1c8dbfe6d456d3fc86
2.读取键值对 调用read方法
near view learn01.lentel.testnet read '{"k": "song"}' --accountId learn01.lentel.testnet --nodeUrl https://near-testnet.infura.io/v3/7102961aa7c04b1c8dbfe6d456d3fc86

3.删除键值对 调用delete方法
near call learn01.lentel.testnet delete '{"k": "first_key"}' --accountId learn01.lentel.testnet --nodeUrl https://near-testnet.infura.io/v3/7102961aa7c04b1c8dbfe6d456d3fc86

参考文档:
idea搭建rust开发环境,解决不识别Rust工程的解决办法_跨链技术践行者的博客-优快云博客_idea rust
Rust智能合约养成日记: 合约部署,函数调用,及explorer使用 | 巴比特
Rust智能合约养成日记(2) | 登链社区 | 区块链技术社区