{"id":11951,"date":"2022-09-29T02:58:15","date_gmt":"2022-09-28T21:28:15","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/"},"modified":"2022-09-29T02:58:15","modified_gmt":"2022-09-28T21:28:15","slug":"solved-not-live-long-enough-with-csv-and-dataflow","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/","title":{"rendered":"[Solved] Not live long enough with CSV and dataflow"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-45284591\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"45284591\" data-parentid=\"45284132\" data-score=\"1\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>The problem is that you are pushing to the Vec a borrowed value: <code>&amp;record[i]<\/code>. The <code>&amp;<\/code> means borrow, and as a consequence the original value <code>record<\/code> must outlive the borrower <code>vec<\/code>.<\/p>\n<p>That might seem fine (both are in the <code>for<\/code> body, and thus both have the same lifetime, i.e., they both live inside the <code>for<\/code> body and therefore none outlive each other), but this doesn&#8217;t happen because the line <code>input.insert(vec)<\/code> is <em>moving<\/em> <code>vec<\/code>. What this means is that <code>vec<\/code> now becomes owned by <code>input<\/code> and hence it lives as long as <code>input<\/code> (as far as I understand). Now, because <code>input<\/code> is outside the <code>for<\/code> body, the moved <code>vec<\/code> lives as long as <code>input<\/code> and therefore outlives the <code>record[i]<\/code>s.<\/p>\n<p>There are a few solutions, but all of them try to remove the dependency between <code>record<\/code> and <code>input<\/code>:<\/p>\n<ol>\n<li>If the <code>record<\/code> is an array of primitive values, or something that implements the <code>Copy<\/code> trait, you can simply omit the borrow and the value will be copied into the vector: <code>vec.push(record[i])<\/code>.<\/li>\n<li>Clone the <code>record<\/code> value into the vector: <code>vec.push(record[i].clone())<\/code>. This forces the creation of a clone, which as above, the <code>vec<\/code> becomes the owner, avoiding the borrow.<\/li>\n<li>\n<p>If the elements in the <code>record<\/code> array don&#8217;t implement <code>Copy<\/code> nor <code>Clone<\/code>, you have to move it. Because the value is in an array, you have to move the array fully (it can&#8217;t have elements that haven&#8217;t been removed). One solution is to transform it into an iterator that moves out the values one by one, and then push them into the vector:<\/p>\n<pre><code>for element in record.into_iter().take(13) {\n    vec.push(element)\n}\n<\/code><\/pre>\n<\/li>\n<li>\n<p>Replace the <code>record<\/code> value with a different value. One final solution in order to move only parts of the array is to replace the element in the array with something else. This means that although you remove an element from the array, you replace it with something else, and the array continues to be valid.<\/p>\n<pre><code>for i in 0..13 {\n    vec.push(std::mem::replace(&amp;record[i], Default::default()));\n}\n<\/code><\/pre>\n<p>You can replace <code>Default::default()<\/code> with another value if you want to.<\/p>\n<\/li>\n<\/ol>\n<p>I hope this helps. I&#8217;m still a noob in Rust, so improvements and critique on the answer are accepted \ud83d\ude42<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">5<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Not live long enough with CSV and dataflow <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] The problem is that you are pushing to the Vec a borrowed value: &amp;record[i]. The &amp; means borrow, and as a consequence the original value record must outlive the borrower vec. That might seem fine (both are in the for body, and thus both have the same lifetime, i.e., they both live inside the &#8230; <a title=\"[Solved] Not live long enough with CSV and dataflow\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/\" aria-label=\"More on [Solved] Not live long enough with CSV and dataflow\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[942],"class_list":["post-11951","post","type-post","status-publish","format-standard","hentry","category-solved","tag-rust"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Not live long enough with CSV and dataflow - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Not live long enough with CSV and dataflow - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] The problem is that you are pushing to the Vec a borrowed value: &amp;record[i]. The &amp; means borrow, and as a consequence the original value record must outlive the borrower vec. That might seem fine (both are in the for body, and thus both have the same lifetime, i.e., they both live inside the ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-28T21:28:15+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Not live long enough with CSV and dataflow\",\"datePublished\":\"2022-09-28T21:28:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/\"},\"wordCount\":340,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"rust\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/\",\"name\":\"[Solved] Not live long enough with CSV and dataflow - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-09-28T21:28:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Not live long enough with CSV and dataflow\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Not live long enough with CSV and dataflow - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Not live long enough with CSV and dataflow - JassWeb","og_description":"[ad_1] The problem is that you are pushing to the Vec a borrowed value: &amp;record[i]. The &amp; means borrow, and as a consequence the original value record must outlive the borrower vec. That might seem fine (both are in the for body, and thus both have the same lifetime, i.e., they both live inside the ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/","og_site_name":"JassWeb","article_published_time":"2022-09-28T21:28:15+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Not live long enough with CSV and dataflow","datePublished":"2022-09-28T21:28:15+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/"},"wordCount":340,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["rust"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/","url":"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/","name":"[Solved] Not live long enough with CSV and dataflow - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-09-28T21:28:15+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-not-live-long-enough-with-csv-and-dataflow\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Not live long enough with CSV and dataflow"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/11951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=11951"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/11951\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=11951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=11951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=11951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}