Skip to content

Commit 3373d17

Browse files
authored
Merge pull request #28 from Phosphorus-M/some-modifications
2 parents 18d85c2 + e6d0250 commit 3373d17

9 files changed

Lines changed: 246 additions & 74 deletions

File tree

assets/css/app.css

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ body {
2323

2424
section>div>div>h1 {
2525
font-size: 1.5rem;
26-
margin: 0.2rem auto;
26+
margin: 0.5rem auto;
2727
}
2828
section>div>div>h2 {
2929
font-size: 1.3rem;
30-
margin: 0.2rem auto;
30+
margin: 0.5rem auto;
3131
}
3232
section>div>div>h3 {
3333
font-size: 1.2rem;
34-
margin: 0.2rem auto;
34+
margin: 0.5rem auto;
3535
}
3636
section>div>div>h4 {
3737
font-size: 1.1rem;
@@ -46,9 +46,17 @@ section>div>div>h6 {
4646
margin: 0.2rem auto;
4747
}
4848

49+
section>div>div{
50+
gap: 0.5rem;
51+
}
52+
section>div>div>p>code{
53+
padding: 0.2rem;
54+
}
55+
4956
.NOTE{
5057
border-left: 3px solid var(--note-bg);
5158
margin: 0.5rem auto;
59+
width: 100%;
5260
.title{
5361
font-weight: 500;
5462
}
@@ -127,4 +135,9 @@ li strong {
127135
color: var(--yellow);
128136
}
129137

138+
hr {
139+
margin-top: 1.5rem;
140+
margin-bottom: 1.5rem;
141+
}
142+
130143
/* FIN DE LOS ESTILOS DE MD */

components/CodeMirror.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { onMounted, ref } from 'vue';
33
import { basicSetup, EditorView } from 'codemirror';
44
import { gruvbox } from '../helpers/codemirror/theme.ts';
55
import { rust } from '../helpers/codemirror/config.ts';
6+
import {keymap, lineNumbers} from "@codemirror/view"
7+
import {indentWithTab} from "@codemirror/commands"
68
79
const props = defineProps<{
810
code?: string;
@@ -19,6 +21,8 @@ onMounted(() => {
1921
basicSetup,
2022
gruvbox,
2123
rust(),
24+
keymap.of([indentWithTab]),
25+
2226
EditorView.updateListener.of((update) => {
2327
if (update.docChanged) {
2428
const newCode = update.state.doc.toString();

content/6.hola-mundo.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
2-
nextPath: ""
3-
previousPath: "05-editor"
2+
nextPath: "variables"
3+
previousPath: "editor"
4+
expectedResponse: "Hello, world!\n"
45
---
56

67

content/7.variables.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
---
2+
nextPath: "constants"
3+
previousPath: "hola-mundo"
4+
expectedResponse: "edad = 25\ncontador = 0\nnuevo contador = 1\n"
5+
initialCode: |
6+
fn main() {
7+
edad = 25
8+
contador = 0
9+
println!("edad = {edad}");
10+
println!("contador = {contador}");
11+
contador = 1
12+
println!("nuevo contador = {contador}");
13+
}
14+
15+
---
16+
17+
# Variables
18+
19+
Cuando programemos usaremos infinidad de veces algo llamado variables.
20+
21+
Una variable es un contenedor que almacena un valor o información en un programa de computadora. Estos valores pueden ser números, texto, lógicos como verdadero o falso, u otros tipos de información.
22+
23+
Veamos el siguiente ejemplo.
24+
25+
```rust
26+
let mi_numero = 2;
27+
```
28+
29+
En Rust, las variables se declaran usando la palabra clave `let`.
30+
Por defecto, las variables son **inmutables**, lo que significa que no puedes cambiar su valor una vez asignado.
31+
Si quieres que una variable sea mutable, debes usar la palabra clave `mut`.
32+
33+
Ejemplo:
34+
35+
```rust
36+
fn main() {
37+
let x = 5; // variable inmutable
38+
let mut y = 10; // variable mutable
39+
40+
println!("x = {}", x);
41+
println!("y = {}", y);
42+
43+
y = 15; // permitido porque es mutable
44+
println!("nuevo y = {}", y);
45+
}
46+
```
47+
48+
👉 Observa que `x` no puede ser modificado, pero `y` sí.
49+
Esto hace que Rust promueva la **seguridad en la programación**, evitando cambios accidentales.
50+
51+
---
52+
53+
### 📝 Ejercicio
54+
55+
Declara dos variables:
56+
57+
1. Una inmutable llamada `edad` con el valor `25`.
58+
2. Una mutable llamada `contador` con el valor `0`.
59+
60+
Después:
61+
62+
* Intenta imprimir ambas variables.
63+
* Cambia el valor de `contador` a `1`.
64+
* Imprime nuevamente el valor de `contador`.
65+
66+
🔹 Tu programa debería mostrar algo como:
67+
68+
```rust
69+
edad = 25
70+
contador = 0
71+
println!("edad = {edad}");
72+
println!("contador = {contador}");
73+
contador = 1;
74+
println!("nuevo contador = {contador}");
75+
```

content/8.constants.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
nextPath: ""
3+
previousPath: "variables"
4+
expectedResponse: "Un día tiene 86400 segundos\n"
5+
initialCode: |
6+
// Escribe aquí tus constantes:
7+
SECONDS_IN_MINUTE = ...;
8+
HOURS_IN_DAY = ...;
9+
10+
fn main() {
11+
// Calcula los segundos en un día usando las constantes
12+
13+
// Muestra el resultado
14+
println!("Un día tiene ??? segundos");
15+
// Reemplaza ??? con el cálculo correcto
16+
}
17+
18+
---
19+
20+
# Constantes
21+
22+
En Rust, además de las variables, podemos definir **constantes**.
23+
Una constante es un valor **inmutable** que se conoce **en tiempo de compilación** y no puede cambiar durante la ejecución del programa.
24+
25+
Se definen con la palabra clave `const` y, a diferencia de `let`, **siempre requieren un tipo explícito**.
26+
27+
Por ejemplo:
28+
29+
```rust
30+
const PI: f64 = 3.14159;
31+
const MAX_USERS: u32 = 100;
32+
```
33+
34+
* `PI` es una constante de tipo `f64`.
35+
* `MAX_USERS` es una constante de tipo `u32`.
36+
37+
Las constantes son muy útiles cuando necesitas valores fijos que no deben variar, como configuraciones predeterminadas o límites dentro de un programa.
38+
39+
📌 Diferencia con `let`:
40+
41+
* `let` puede ser mutable (`let mut`) o inmutable, y su valor se conoce en **tiempo de ejecución**.
42+
* `const` siempre es inmutable, y su valor debe estar disponible en **tiempo de compilación**.
43+
44+
---
45+
46+
### ✏️ Ejercicio
47+
48+
Declara dos constantes:
49+
50+
1. `SECONDS_IN_MINUTE` de tipo `u32` con valor `60`.
51+
2. `HOURS_IN_DAY` de tipo `u32` con valor `24`.
52+
53+
Luego, usa estas constantes para calcular cuántos **segundos hay en un día** y muestra el resultado con `println!`.
54+
55+
<div class="NOTE">
56+
<p class="title">💡 Pista</p>
57+
<p>Multiplica en orden → segundos por minuto × minutos por hora × horas por día. 😀</p>
58+
</div>

helpers/getCodeResponse.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
import { hitApi } from "~/services/api";
22

3-
export async function getCodeResponse(payload: Object): Promise<Object> {
3+
export type RustPlaygroundResponse = {
4+
body: {
5+
result: string,
6+
error?: string
7+
},
8+
status: number
9+
}
10+
11+
export async function getCodeResponse(payload: Object): Promise<RustPlaygroundResponse> {
412
const response = await hitApi(
513
"POST",
6-
"https://emkc.org/api/v2/piston/execute",
14+
"https://play.rust-lang.org/evaluate.json",
715
payload,
816
);
9-
if (response.run.code !== 0) {
10-
return response.run.stderr;
11-
}
12-
return response.run.stdout;
17+
return response;
1318
}

nuxt.config.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ export default defineNuxtConfig({
1717
"nitro-cloudflare-dev",
1818
"nuxt-clarity-analytics",
1919
],
20-
20+
2121
content: {
22+
documentDriven: true,
2223
highlight: {
2324
theme: {
2425
default: "dracula",

0 commit comments

Comments
 (0)