小编Den*_*ive的帖子

我们可以定义一个“str”类型的变量吗?

我引用官方文档

引用代表某种拥有价值的借用。

来自 C、Java、Perl 和 PHP,我将“引用”视为值的地址(或指针)。可以声明“T”类型的变量或对“T”类型变量的引用(或指针)(在 Perl 中使用&- 或\)。

然而,我不确定这种表示对于 Rust 来说是否完全有效。有件事让我烦恼。

我总是看到“字符串切片”被作为参考进行操作,即以其借用的形式(&str)。

我(到目前为止)从未见过“ str”类型的变量。

我试图声明一个类型为“ str”的变量...但是编译器不允许我这样做。

问题:我们可以定义一个“ str”类型的变量吗?

如果不可能,则意味着我们面临着一种只能声明为引用的数据类型。这看起来很奇怪...

types reference slice rust

7
推荐指数
2
解决办法
456
查看次数

“String”总是分配在堆上吗?

在这个Rust 文档中,写道:

字符串是在堆上分配的。

但是,当我查看内存映射时,我发现它是在堆栈中分配的......

让我们考虑下面的基本 Rust 源文件:

// rustc -o string_vs_str -C opt-level=0 -C debuginfo=2 main.rs

fn main() {
    let my_string: String = String::from("abc");
    let my_str: &str = "def";
    println!("{}{}", my_string, my_str);
    let my_string_str: &str = my_string.as_str();
    println!("my_string_str: {}", my_string_str);
}
Run Code Online (Sandbox Code Playgroud)

让我们根据以下命令在可执行文件上执行 RUST-GDB:

# rust-gdb --batch --command=test.gdb --args ./string_vs_str

set width 0
set height 0
set verbose off

### Set 2 breakpoints
b main.rs:6
b main.rs:8

### Start the process
r

### Display the memory mapping into the …
Run Code Online (Sandbox Code Playgroud)

string heap-memory stack-memory rust

4
推荐指数
1
解决办法
706
查看次数

Dart “StreamTransformer<RS, RT>cast<RS, RT>()”有什么作用?

我已经实现了流转换器。请注意,这只是一个练习(为了学习 Dart)。该转换器将整数转换为字符串。我给出了下面的代码,你也可以在GitHub上找到它。

// Conceptually, a transformer is simply a function from Stream to Stream that
// is encapsulated into a class.
//
// A transformer is made of:
// - A stream controller. The controller provides the "output" stream that will
//   receive the transformed values.
// - A "bind()" method. This method is called by the "input" stream "transform"
//   method (inputStream.transform(<the stream transformer>).

import 'dart:async';

/// This class defines the implementation of a class that emulates …
Run Code Online (Sandbox Code Playgroud)

stream dart

3
推荐指数
1
解决办法
1026
查看次数

“str”值分配在哪里?是在堆里吗?

我是 Rust 新手,我试图弄清楚东西分配在哪里。

1.64.0我在 Ubuntu 上使用 Rust 22.04.0( jammy):

$ rustc --version
rustc 1.64.0 (a55dd71d5 2022-09-19)
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.1 LTS
Release:    22.04
Codename:   jammy
Run Code Online (Sandbox Code Playgroud)

我尝试通过编译这个非常基本的 Rust 程序来探索可执行文件:

fn tester() {
    let borrowed_string: &str = "world";
    println!("{}", borrowed_string);
}

fn main() { tester(); }
Run Code Online (Sandbox Code Playgroud)

编译(好吧,这有点矫枉过正了......但我想确保我拥有使用 GDB 所需的一切):

$ cargo build --config "profile.dev.debug=true" --config "profile.dev.opt-level=0" --profile=dev
  Compiling variables v0.1.0 (/home/denis/Documents/github/rust-playground/variables)
   Finished dev [unoptimized + debuginfo] target(s) in 0.71s …
Run Code Online (Sandbox Code Playgroud)

gdb heap-memory rust

3
推荐指数
1
解决办法
160
查看次数

Dart/WebStorm“取消 dart.async.StreamSubscription 的实例”

我正在使用带有 Dart 插件的 WenStorm 2018.2.5(已注册)。

在编辑一个简单的代码时,编辑器向我显示了一条消息:

取消 dart.async.StreamSubscription 的实例

在此处输入图片说明

我不明白这个消息是什么意思。我看不出代码有什么问题。而且,如果我运行代码检查,结果是:“ No suspicious code found”。

任何的想法 ?

笔记 :

const int eventsCount = 5;
const int waitBetweenTwoEvents = 1;

typedef Streamer = Stream<int> Function();

...

Streamer streamCreator = () async* {
  for(int i=0; i<eventsCount; i++) {
    yield i;
    sleep(Duration(seconds: waitBetweenTwoEvents));
  }
};
Run Code Online (Sandbox Code Playgroud)

webstorm dart

1
推荐指数
1
解决办法
3180
查看次数

标签 统计

rust ×3

dart ×2

heap-memory ×2

gdb ×1

reference ×1

slice ×1

stack-memory ×1

stream ×1

string ×1

types ×1

webstorm ×1