Решение на упр.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

История (1 версия и 0 коментара)

Георги качи първо решение на 16.10.2025 18:36 (преди 14 дена)