{"id":147,"date":"2023-08-21T18:32:59","date_gmt":"2023-08-21T16:32:59","guid":{"rendered":"https:\/\/dhouard.wordpress.com\/?p=147"},"modified":"2024-05-04T21:18:50","modified_gmt":"2024-05-04T19:18:50","slug":"ctree-en-rust","status":"publish","type":"post","link":"https:\/\/dhouard.ddns.net\/blog\/ctree-en-rust\/","title":{"rendered":"ctree en Rust"},"content":{"rendered":"\n<p>Hace ya mucho que empec\u00e9 en esto de la programaci\u00f3n y, en un principio, lo que m\u00e1s me gustaba era programar aplicaciones y utilidades enfocadas a productividad en la consola de <strong>MS-DOS<\/strong> que era, b\u00e1sicamente, lo que se estilaba en aquellos tiempos. Despu\u00e9s la carrera profesional me llev\u00f3 por el desarrollo web y me alej\u00e9 de ese tipo de aplicaciones.<\/p>\n\n\n\n<p>Hace no mucho, me encontr\u00e9 con un peque\u00f1o problema que me suele ocurrir cuando en una consola estoy situado en un directorio muy profundo en el sistema ya que mi consola suele acortar la ruta completa.<\/p>\n\n\n\n<!--more-->\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/dhouard.ddns.net\/blog\/wp-content\/uploads\/2023\/08\/imagen-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"537\" height=\"59\" src=\"https:\/\/dhouard.ddns.net\/blog\/wp-content\/uploads\/2023\/08\/imagen-4.png?w=537\" alt=\"\" class=\"wp-image-152\" srcset=\"https:\/\/dhouard.ddns.net\/blog\/wp-content\/uploads\/2023\/08\/imagen-4.png 537w, https:\/\/dhouard.ddns.net\/blog\/wp-content\/uploads\/2023\/08\/imagen-4-300x33.png 300w\" sizes=\"auto, (max-width: 537px) 100vw, 537px\" \/><\/a><\/figure>\n\n\n\n<p>La soluci\u00f3n que se me ocurri\u00f3 fue una peque\u00f1a utilidad en <strong>python<\/strong> que muestra, de manera, simplificada, un \u00e1rbol donde se indica la ruta completa del directorio actual. El ejecutar la utilidad se ve m\u00e1s o menos as\u00ed.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/dhouard.ddns.net\/blog\/wp-content\/uploads\/2023\/08\/imagen-5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"560\" height=\"324\" src=\"https:\/\/dhouard.ddns.net\/blog\/wp-content\/uploads\/2023\/08\/imagen-5.png?w=560\" alt=\"\" class=\"wp-image-154\" srcset=\"https:\/\/dhouard.ddns.net\/blog\/wp-content\/uploads\/2023\/08\/imagen-5.png 560w, https:\/\/dhouard.ddns.net\/blog\/wp-content\/uploads\/2023\/08\/imagen-5-300x174.png 300w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/a><\/figure>\n\n\n\n<p>El c\u00f3digo de esta peque\u00f1o utilidad es el siguiente:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1.15rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#FAFAFA\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"#!\/usr\/bin\/python3\n\nimport os\nimport pathlib\n\ntree = []\n\ndef get_upper_dir(dir):\n    try:\n        dir = pathlib.Path(dir).parent.absolute()\n        if (os.path.basename(str(dir))) != '':\n            tree.append(str(dir))\n            get_upper_dir(dir)\n        else:\n            tree.append(str(dir))\n    except Exception as error:\n        pass\n\n    return tree\n\ndef draw_tree():\n    tree.reverse()\n    for index, dir in enumerate(tree):\n        cad = ''\n        if index:\n            cad += '  ' * (index - 1) + ' ' + u'\\u2514' + u'\\u2500' + os.path.basename(dir)\n        else:\n            cad = dir\n        print(cad)\n        if index &lt; (len(tree) - 1):\n            print('  ' * index + ' ' + u'\\u2502')\n\n\n\ndef app():\n    current_dir = os.getcwd()\n    tree.append(current_dir)\n    get_upper_dir(current_dir)\n    draw_tree()\n\n\n\nif __name__ == '__main__':\n    app()\n\" style=\"color:#90A4AE;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-lighter\" style=\"background-color: #FAFAFA\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #90A4AE; font-style: italic\">#!\/usr\/bin\/python3<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #39ADB5; font-style: italic\">import<\/span><span style=\"color: #90A4AE\"> os<\/span><\/span>\n<span class=\"line\"><span style=\"color: #39ADB5; font-style: italic\">import<\/span><span style=\"color: #90A4AE\"> pathlib<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">tree <\/span><span style=\"color: #39ADB5\">=<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">[]<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #9C3EDA\">def<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #6182B8\">get_upper_dir<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #90A4AE; font-style: italic\">dir<\/span><span style=\"color: #39ADB5\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">    <\/span><span style=\"color: #39ADB5; font-style: italic\">try<\/span><span style=\"color: #39ADB5\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">        <\/span><span style=\"color: #6182B8\">dir<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">=<\/span><span style=\"color: #90A4AE\"> pathlib<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #6182B8\">Path<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #6182B8\">dir<\/span><span style=\"color: #39ADB5\">).<\/span><span style=\"color: #E53935\">parent<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #6182B8\">absolute<\/span><span style=\"color: #39ADB5\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">        <\/span><span style=\"color: #39ADB5; font-style: italic\">if<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #90A4AE\">os<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #E53935\">path<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #6182B8\">basename<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #E2931D\">str<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #6182B8\">dir<\/span><span style=\"color: #39ADB5\">)))<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">!=<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">&#39;&#39;<\/span><span style=\"color: #39ADB5\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">            tree<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #6182B8\">append<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #E2931D\">str<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #6182B8\">dir<\/span><span style=\"color: #39ADB5\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">            <\/span><span style=\"color: #6182B8\">get_upper_dir<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #6182B8\">dir<\/span><span style=\"color: #39ADB5\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">        <\/span><span style=\"color: #39ADB5; font-style: italic\">else<\/span><span style=\"color: #39ADB5\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">            tree<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #6182B8\">append<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #E2931D\">str<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #6182B8\">dir<\/span><span style=\"color: #39ADB5\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">    <\/span><span style=\"color: #39ADB5; font-style: italic\">except<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #E2931D\">Exception<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5; font-style: italic\">as<\/span><span style=\"color: #90A4AE\"> error<\/span><span style=\"color: #39ADB5\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">        <\/span><span style=\"color: #39ADB5; font-style: italic\">pass<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">    <\/span><span style=\"color: #39ADB5; font-style: italic\">return<\/span><span style=\"color: #90A4AE\"> tree<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #9C3EDA\">def<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #6182B8\">draw_tree<\/span><span style=\"color: #39ADB5\">():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">    tree<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #6182B8\">reverse<\/span><span style=\"color: #39ADB5\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">    <\/span><span style=\"color: #39ADB5; font-style: italic\">for<\/span><span style=\"color: #90A4AE\"> index<\/span><span style=\"color: #39ADB5\">,<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #6182B8\">dir<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5; font-style: italic\">in<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #6182B8\">enumerate<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #6182B8\">tree<\/span><span style=\"color: #39ADB5\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">        cad <\/span><span style=\"color: #39ADB5\">=<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">&#39;&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">        <\/span><span style=\"color: #39ADB5; font-style: italic\">if<\/span><span style=\"color: #90A4AE\"> index<\/span><span style=\"color: #39ADB5\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">            cad <\/span><span style=\"color: #39ADB5\">+=<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #91B859\">  <\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">*<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #90A4AE\">index <\/span><span style=\"color: #39ADB5\">-<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #F76D47\">1<\/span><span style=\"color: #39ADB5\">)<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">+<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #91B859\"> <\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">+<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #9C3EDA\">u<\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #90A4AE\">\\u2514<\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">+<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #9C3EDA\">u<\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #90A4AE\">\\u2500<\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">+<\/span><span style=\"color: #90A4AE\"> os<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #E53935\">path<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #6182B8\">basename<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #6182B8\">dir<\/span><span style=\"color: #39ADB5\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">        <\/span><span style=\"color: #39ADB5; font-style: italic\">else<\/span><span style=\"color: #39ADB5\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">            cad <\/span><span style=\"color: #39ADB5\">=<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #6182B8\">dir<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">        <\/span><span style=\"color: #6182B8\">print<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #6182B8\">cad<\/span><span style=\"color: #39ADB5\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">        <\/span><span style=\"color: #39ADB5; font-style: italic\">if<\/span><span style=\"color: #90A4AE\"> index <\/span><span style=\"color: #39ADB5\">&lt;<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #6182B8\">len<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #6182B8\">tree<\/span><span style=\"color: #39ADB5\">)<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">-<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #F76D47\">1<\/span><span style=\"color: #39ADB5\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">            <\/span><span style=\"color: #6182B8\">print<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #91B859\">  <\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #6182B8\"> <\/span><span style=\"color: #39ADB5\">*<\/span><span style=\"color: #6182B8\"> index <\/span><span style=\"color: #39ADB5\">+<\/span><span style=\"color: #6182B8\"> <\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #91B859\"> <\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #6182B8\"> <\/span><span style=\"color: #39ADB5\">+<\/span><span style=\"color: #6182B8\"> <\/span><span style=\"color: #9C3EDA\">u<\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #90A4AE\">\\u2502<\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #39ADB5\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #9C3EDA\">def<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #6182B8\">app<\/span><span style=\"color: #39ADB5\">():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">    current_dir <\/span><span style=\"color: #39ADB5\">=<\/span><span style=\"color: #90A4AE\"> os<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #6182B8\">getcwd<\/span><span style=\"color: #39ADB5\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">    tree<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #6182B8\">append<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #6182B8\">current_dir<\/span><span style=\"color: #39ADB5\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">    <\/span><span style=\"color: #6182B8\">get_upper_dir<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #6182B8\">current_dir<\/span><span style=\"color: #39ADB5\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">    <\/span><span style=\"color: #6182B8\">draw_tree<\/span><span style=\"color: #39ADB5\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #39ADB5; font-style: italic\">if<\/span><span style=\"color: #90A4AE\"> __name__ <\/span><span style=\"color: #39ADB5\">==<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #91B859\">__main__<\/span><span style=\"color: #39ADB5\">&#39;<\/span><span style=\"color: #39ADB5\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">    <\/span><span style=\"color: #6182B8\">app<\/span><span style=\"color: #39ADB5\">()<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Pues bien, como llevo un tiempo trasteando con <strong>rust<\/strong>, me he decidido a portar esta utilidad a este lenguaje, quedando realmente m\u00e1s compacto. El c\u00f3digo es tal que as\u00ed:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1.15rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#90A4AE;--cbp-line-number-width:calc(2 * 0.6 * 1.15rem);line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#FAFAFA\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"use std::env::current_dir;\n\nfn main() {\n    let dir = current_dir().unwrap();\n    for (index, partial) in dir.iter().enumerate() {\n        if index == 0 {\n            println!(&quot;{}&quot;, partial.to_str().unwrap())\n        } else {\n            println!(&quot;{}\u2502&quot;,&quot;  &quot;.repeat(index - 1));\n            println!(&quot;{}\u2514\u2500{}&quot;, &quot;  &quot;.repeat(index - 1),partial.to_str().unwrap())\n        }\n    }\n}\n\" style=\"color:#90A4AE;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-lighter\" style=\"background-color: #FAFAFA\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F76D47\">use<\/span><span style=\"color: #E2931D\"> std<\/span><span style=\"color: #39ADB5\">::<\/span><span style=\"color: #E2931D\">env<\/span><span style=\"color: #39ADB5\">::<\/span><span style=\"color: #E2931D\">current_dir<\/span><span style=\"color: #39ADB5\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F76D47\">fn<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #6182B8\">main<\/span><span style=\"color: #39ADB5\">()<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">    <\/span><span style=\"color: #9C3EDA\">let<\/span><span style=\"color: #90A4AE\"> dir <\/span><span style=\"color: #39ADB5\">=<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #6182B8\">current_dir<\/span><span style=\"color: #39ADB5\">().<\/span><span style=\"color: #6182B8\">unwrap<\/span><span style=\"color: #39ADB5\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">    <\/span><span style=\"color: #39ADB5; font-style: italic\">for<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #90A4AE\">index<\/span><span style=\"color: #39ADB5\">,<\/span><span style=\"color: #90A4AE\"> partial<\/span><span style=\"color: #39ADB5\">)<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #F76D47\">in<\/span><span style=\"color: #90A4AE\"> dir<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #6182B8\">iter<\/span><span style=\"color: #39ADB5\">().<\/span><span style=\"color: #6182B8\">enumerate<\/span><span style=\"color: #39ADB5\">()<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">        <\/span><span style=\"color: #39ADB5; font-style: italic\">if<\/span><span style=\"color: #90A4AE\"> index <\/span><span style=\"color: #39ADB5\">==<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #F76D47\">0<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">            <\/span><span style=\"color: #6182B8\">println!<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #39ADB5\">&quot;{}&quot;<\/span><span style=\"color: #39ADB5\">,<\/span><span style=\"color: #90A4AE\"> partial<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #6182B8\">to_str<\/span><span style=\"color: #39ADB5\">().<\/span><span style=\"color: #6182B8\">unwrap<\/span><span style=\"color: #39ADB5\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">        <\/span><span style=\"color: #39ADB5\">}<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5; font-style: italic\">else<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">            <\/span><span style=\"color: #6182B8\">println!<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #39ADB5\">&quot;{}<\/span><span style=\"color: #91B859\">\u2502<\/span><span style=\"color: #39ADB5\">&quot;<\/span><span style=\"color: #39ADB5\">,<\/span><span style=\"color: #39ADB5\">&quot;<\/span><span style=\"color: #91B859\">  <\/span><span style=\"color: #39ADB5\">&quot;<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #6182B8\">repeat<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #90A4AE\">index <\/span><span style=\"color: #39ADB5\">-<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #F76D47\">1<\/span><span style=\"color: #39ADB5\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">            <\/span><span style=\"color: #6182B8\">println!<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #39ADB5\">&quot;{}<\/span><span style=\"color: #91B859\">\u2514\u2500<\/span><span style=\"color: #39ADB5\">{}&quot;<\/span><span style=\"color: #39ADB5\">,<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #39ADB5\">&quot;<\/span><span style=\"color: #91B859\">  <\/span><span style=\"color: #39ADB5\">&quot;<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #6182B8\">repeat<\/span><span style=\"color: #39ADB5\">(<\/span><span style=\"color: #90A4AE\">index <\/span><span style=\"color: #39ADB5\">-<\/span><span style=\"color: #90A4AE\"> <\/span><span style=\"color: #F76D47\">1<\/span><span style=\"color: #39ADB5\">),<\/span><span style=\"color: #90A4AE\">partial<\/span><span style=\"color: #39ADB5\">.<\/span><span style=\"color: #6182B8\">to_str<\/span><span style=\"color: #39ADB5\">().<\/span><span style=\"color: #6182B8\">unwrap<\/span><span style=\"color: #39ADB5\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">        <\/span><span style=\"color: #39ADB5\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #90A4AE\">    <\/span><span style=\"color: #39ADB5\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #39ADB5\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Y la salida de la ejecuci\u00f3n es<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/dhouard.ddns.net\/blog\/wp-content\/uploads\/2023\/08\/imagen-6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1345\" height=\"432\" src=\"https:\/\/dhouard.ddns.net\/blog\/wp-content\/uploads\/2023\/08\/imagen-6.png?w=1024\" alt=\"\" class=\"wp-image-161\" srcset=\"https:\/\/dhouard.ddns.net\/blog\/wp-content\/uploads\/2023\/08\/imagen-6.png 1345w, https:\/\/dhouard.ddns.net\/blog\/wp-content\/uploads\/2023\/08\/imagen-6-300x96.png 300w, https:\/\/dhouard.ddns.net\/blog\/wp-content\/uploads\/2023\/08\/imagen-6-1024x329.png 1024w, https:\/\/dhouard.ddns.net\/blog\/wp-content\/uploads\/2023\/08\/imagen-6-768x247.png 768w\" sizes=\"auto, (max-width: 1345px) 100vw, 1345px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hace ya mucho que empec\u00e9 en esto de la programaci\u00f3n y, en un principio, lo que m\u00e1s me gustaba era programar aplicaciones y utilidades enfocadas a productividad en la consola de MS-DOS que era, b\u00e1sicamente, lo que se estilaba en aquellos tiempos. Despu\u00e9s la carrera profesional me llev\u00f3 por el desarrollo web y me alej\u00e9 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[20,22,23],"class_list":["post-147","post","type-post","status-publish","format-standard","hentry","category-utilidades","tag-programacion","tag-python","tag-rust"],"_links":{"self":[{"href":"https:\/\/dhouard.ddns.net\/blog\/wp-json\/wp\/v2\/posts\/147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dhouard.ddns.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dhouard.ddns.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dhouard.ddns.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dhouard.ddns.net\/blog\/wp-json\/wp\/v2\/comments?post=147"}],"version-history":[{"count":7,"href":"https:\/\/dhouard.ddns.net\/blog\/wp-json\/wp\/v2\/posts\/147\/revisions"}],"predecessor-version":[{"id":311,"href":"https:\/\/dhouard.ddns.net\/blog\/wp-json\/wp\/v2\/posts\/147\/revisions\/311"}],"wp:attachment":[{"href":"https:\/\/dhouard.ddns.net\/blog\/wp-json\/wp\/v2\/media?parent=147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dhouard.ddns.net\/blog\/wp-json\/wp\/v2\/categories?post=147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dhouard.ddns.net\/blog\/wp-json\/wp\/v2\/tags?post=147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}