Skip to content

Commit 17232d5

Browse files
committed
docs: expand Smart Pointers section with detailed explanations and examples
1 parent 094dbf8 commit 17232d5

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

src/es/new-concepts/smart-pointers.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,43 @@
11
# Smart Pointers y Heap Allocation
2+
3+
En Go, los desarrolladores rara vez se preocupan de donde se almacenan los
4+
datos en memoria. El lenguaje, junto al recolector de basura (Garbage Collector)
5+
se encarga automáticamente de decidir si una variable vive en el stack o en el
6+
heap, y se ocupa de liberarla cuando ya no es necesaria. Es un modelo cómodo.
7+
8+
En Rust, en cambio, no tenemos Garbage collector como hemos explicado en el
9+
capitulo [Ownership y Borrowing] y en [Mentalidad y Filosofía].
10+
Es por eso que en su lugar Rust ofrece estos mecanismos, [Ownership y Borrowing]
11+
que garantizan seguridad sin pausas de recolección. Esto también significa
12+
que en ciertas ocasiones, el programador debe decidir explicitamente si un valor
13+
debe almacenarse en el heap y que hacer con él. En este punto es donde entran en
14+
juego los `smart pointers`.
15+
16+
## ¿Qué es un Smart Pointer?
17+
18+
Un **smart pointer** en Rust es una estructura que se comporta como puntero,
19+
pero además encapsula lógica adicional. Es decir, no solo es una dirección de
20+
memoria, sino que posee comportamiento propio, un comportamiento asociado.
21+
22+
Por ejemplo, puede gestionar la propiedad del valor al que apunta, contar
23+
cuántas referencias activas hay hacia él, o incluso permitir mutabilidad
24+
controlada en tiempo de ejecución.
25+
26+
Algunos smart pointers comunes en Rust son:
27+
- `Box<T>` que sirve para almacenar valores en el `heap`, hablaremos más de esto
28+
en breve
29+
- `Rc<T>` para conteo de referencias en entornos `single thread`
30+
- `Arc<T>` para conteo de referencias en entornos `multi thread`
31+
- `RefCell<T>` para mutabilidad interior con verificación en tiempo de ejecución
32+
33+
Vamos a concentrarnos en `Box` en este capitulo, ya que es el más simple y el
34+
más útil para introducir el concepto de `heap allocation` y `dynamic dispatch`.
35+
36+
## ¿Qué es `Box<T>`?
37+
38+
`Box<T>` es el smart pointer más básico en Rust. Su único uso es mover un valor
39+
al heap.
40+
41+
42+
[Ownership y Borrowing]: ./../fundamental/ownership-and-borrowing.md
43+
[Mentalidad y Filosofía]: ./../mindset.md

0 commit comments

Comments
 (0)