Решение на упр.02 задача 1 от Георги Стоянов
Резултати
- 1 точка от тестове
- 0 бонус точки
- 1 точка общо
- 1 успешни тест(а)
- 0 неуспешни тест(а)
Код
fn duplicate_i32(x: i32) -> (i32, i32) {
(x, x)
}
fn duplicate_string(s: String) -> (String, String) {
let new_string1 = s.clone();
let new_string2 = s.clone();
(new_string1, new_string2)
}
fn main() {
let a = 10;
let (a1, a2) = duplicate_i32(a);
println!("a1 = {}, a2 = {}, original a = {}", a1, a2, a);
let s = String::from("Здравей");
let (s1, s2) = duplicate_string(s);
println!("s1 = {}, s2 = {}", s1, s2);
}
/*
Можем да използваме променливата "а" след duplicate_i32, защото "а" е се запазва на стека, тоест нейната стойност просто се копира във самата функция, а самата променлива "а" запазва собственост над стойността си.
Стринг от друга страна се запазва на Heap-a, теост при извикването на метода duplicate_string, s губи собственост над стойността си, тя се пренася на аргумента на функцията, затова тя не може да върне (s, s). Все едно тази стойност ще бъде присвоена от две променливи, което не е позволено от Rust, една стойност, складирана в Heap-a може да бъде притежавана само от една променлива.
*/
Лог от изпълнението
Updating crates.io index
Locking 17 packages to latest compatible versions
Compiling proc-macro2 v1.0.102
Compiling quote v1.0.41
Compiling unicode-ident v1.0.20
Compiling futures-core v0.3.31
Compiling futures-sink v0.3.31
Compiling futures-channel v0.3.31
Compiling futures-io v0.3.31
Compiling pin-project-lite v0.2.16
Compiling syn v2.0.108
Compiling memchr v2.7.6
Compiling pin-utils v0.1.0
Compiling slab v0.4.11
Compiling futures-task v0.3.31
Compiling solution v0.1.0 (/tmp/d20251023-1757769-16tg1a0/solution)
warning: function `duplicate_i32` is never used
--> src/lib.rs:1:4
|
1 | fn duplicate_i32(x: i32) -> (i32, i32) {
| ^^^^^^^^^^^^^
|
= note: `#[warn(dead_code)]` on by default
warning: function `duplicate_string` is never used
--> src/lib.rs:5:4
|
5 | fn duplicate_string(s: String) -> (String, String) {
| ^^^^^^^^^^^^^^^^
warning: function `main` is never used
--> src/lib.rs:11:4
|
11 | fn main() {
| ^^^^
warning: `solution` (lib) generated 3 warnings
Compiling futures-macro v0.3.31
Compiling futures-util v0.3.31
Compiling futures-executor v0.3.31
Compiling futures v0.3.31
warning: function `main` is never used
--> tests/../src/lib.rs:11:4
|
11 | fn main() {
| ^^^^
|
= note: `#[warn(dead_code)]` on by default
warning: `solution` (test "solution_test") generated 1 warning
Finished `test` profile [unoptimized + debuginfo] target(s) in 8.26s
Running tests/solution_test.rs (target/debug/deps/solution_test-fc1324dc0157cdc7)
running 1 test
test solution_test::test_basic ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
