Pig Latin in RustPig Latin TranslatorPython Pig Latin TranslatorSimple TCP client in RustPig Latin Translator in JavaA simple register VM written in RustComplementary multiply with carry in RustPig Latin exercise in RustConvert string to pig latin in RustProgramming language lexer in RustFind the longest common sequence of two strings in Rust

Should I stop contributing to retirement accounts?

Why has "pence" been used in this sentence, not "pences"?

Some numbers are more equivalent than others

Is it possible to have a strip of cold climate in the middle of a planet?

Greco-Roman egalitarianism

What is this type of notehead called?

Can I use my Chinese passport to enter China after I acquired another citizenship?

Reply 'no position' while the job posting is still there

Is a model fitted to data or is data fitted to a model?

Freedom of speech and where it applies

Can the Supreme Court overturn an impeachment?

How much character growth crosses the line into breaking the character

Greatest common substring

Can a significant change in incentives void an employment contract?

Is it possible to use .desktop files to open local pdf files on specific pages with a browser?

How do ground effect vehicles perform turns?

What linear sensor for a keyboard?

We have a love-hate relationship

Did arcade monitors have same pixel aspect ratio as TV sets?

Two-sided logarithm inequality

Is possible to search in vim history?

A social experiment. What is the worst that can happen?

On a tidally locked planet, would time be quantized?

Is there a conventional notation or name for the slip angle?



Pig Latin in Rust


Pig Latin TranslatorPython Pig Latin TranslatorSimple TCP client in RustPig Latin Translator in JavaA simple register VM written in RustComplementary multiply with carry in RustPig Latin exercise in RustConvert string to pig latin in RustProgramming language lexer in RustFind the longest common sequence of two strings in Rust













1












$begingroup$


I feel like this code can be written in a better way but don't know how. Any help would be really appreciated.



mod string_man 
pub fn first_ch(txt: &String) -> char
txt.chars().next().unwrap()


pub fn pigify(txt: &String) -> String
let frstch = first_ch(txt);

match frstch
'i'











share|improve this question











$endgroup$




bumped to the homepage by Community 4 mins ago


This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.














  • $begingroup$
    It would be cool to write what you actually trying to do. The code doesn't make much sense to me.
    $endgroup$
    – hellow
    Feb 5 at 12:40















1












$begingroup$


I feel like this code can be written in a better way but don't know how. Any help would be really appreciated.



mod string_man 
pub fn first_ch(txt: &String) -> char
txt.chars().next().unwrap()


pub fn pigify(txt: &String) -> String
let frstch = first_ch(txt);

match frstch
'i'











share|improve this question











$endgroup$




bumped to the homepage by Community 4 mins ago


This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.














  • $begingroup$
    It would be cool to write what you actually trying to do. The code doesn't make much sense to me.
    $endgroup$
    – hellow
    Feb 5 at 12:40













1












1








1





$begingroup$


I feel like this code can be written in a better way but don't know how. Any help would be really appreciated.



mod string_man 
pub fn first_ch(txt: &String) -> char
txt.chars().next().unwrap()


pub fn pigify(txt: &String) -> String
let frstch = first_ch(txt);

match frstch
'i'











share|improve this question











$endgroup$




I feel like this code can be written in a better way but don't know how. Any help would be really appreciated.



mod string_man 
pub fn first_ch(txt: &String) -> char
txt.chars().next().unwrap()


pub fn pigify(txt: &String) -> String
let frstch = first_ch(txt);

match frstch
'i'








rust pig-latin






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Feb 2 at 4:28









200_success

130k17155419




130k17155419










asked Feb 1 at 23:57









Robear WagihRobear Wagih

61




61





bumped to the homepage by Community 4 mins ago


This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.







bumped to the homepage by Community 4 mins ago


This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.













  • $begingroup$
    It would be cool to write what you actually trying to do. The code doesn't make much sense to me.
    $endgroup$
    – hellow
    Feb 5 at 12:40
















  • $begingroup$
    It would be cool to write what you actually trying to do. The code doesn't make much sense to me.
    $endgroup$
    – hellow
    Feb 5 at 12:40















$begingroup$
It would be cool to write what you actually trying to do. The code doesn't make much sense to me.
$endgroup$
– hellow
Feb 5 at 12:40




$begingroup$
It would be cool to write what you actually trying to do. The code doesn't make much sense to me.
$endgroup$
– hellow
Feb 5 at 12:40










1 Answer
1






active

oldest

votes


















0












$begingroup$

mod string_man 
// This is needed to handle caller passing you multiple words.
// Although it still won't handle punctuation correctly.
// "Hello world" works, for example, but "Hello world." doesn't.
// I ran out of steam to solve this problem; so I leave it as
// an exercise :). There are many things a caller could pass
// here that probably won't do what you want
pub fn pigify<S>(s: S) -> String where S: AsRef<str>
let mut output = String::new();
let mut first = true;
for word in s.as_ref().split_whitespace()
let s = pigify_word_simple(word);
if first
output += &s;
first = false;
continue;

output += " ";
output += &s;

output


// Simple version of pigifying a word that I would probably do in practice...
fn pigify_word_simple<S>(s: S) -> String
where
S: AsRef<str>,

let s = s.as_ref();

let beginning = match s.chars().next()
Some(c) => c.to_lowercase().to_string(),
None => return "".to_string(),
;

match beginning.as_ref() "u" => s.to_string() + "-hay",
_ => (&s[1..]).to_string() + "-" + &beginning + "ay",



#[allow(dead_code)]
// Overly complicated version of pigifying a word that is probably a tiny, tiny bit faster...
fn pigify_word_complex<S>(s: S) -> String
where
S: AsRef<str>,

// Using this trait give you the `write_str` and `write_char` methods on
// `String`, which are used below (see pigify).
use std::fmt::Write;

// After this line, s will be a `&str`.
let s = s.as_ref();

let beginning = match s.chars().next()
// Would use `to_lowercase` here, which returns an iterator of chars because
// I guess the lowercase equivalent of some utf-8 characters are actually
// sets of more than one character. So we also call to_string() on the iterator
// to turn it into a String.
Some(c) => c.to_lowercase().to_string(),
// Return an empty string if someone provides an empty S as input.
None => return "".to_string(),
;

// You know the maximum possible size of the String you will be returning; so
// when you allocate it, tell Rust to reserve enough capacity so it
// won't have to do any reallocations as it writes data into it.
let mut output = String::with_capacity(s.len() + beginning.len() + 3);

match beginning.as_ref() "e"

// Final note: I don't think any of the unwraps above can ever fail,
// but someone please correct me if I'm wrong.

output


```





share|improve this answer











$endgroup$












    Your Answer





    StackExchange.ifUsing("editor", function ()
    return StackExchange.using("mathjaxEditing", function ()
    StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
    StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
    );
    );
    , "mathjax-editing");

    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "196"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f212726%2fpig-latin-in-rust%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0












    $begingroup$

    mod string_man 
    // This is needed to handle caller passing you multiple words.
    // Although it still won't handle punctuation correctly.
    // "Hello world" works, for example, but "Hello world." doesn't.
    // I ran out of steam to solve this problem; so I leave it as
    // an exercise :). There are many things a caller could pass
    // here that probably won't do what you want
    pub fn pigify<S>(s: S) -> String where S: AsRef<str>
    let mut output = String::new();
    let mut first = true;
    for word in s.as_ref().split_whitespace()
    let s = pigify_word_simple(word);
    if first
    output += &s;
    first = false;
    continue;

    output += " ";
    output += &s;

    output


    // Simple version of pigifying a word that I would probably do in practice...
    fn pigify_word_simple<S>(s: S) -> String
    where
    S: AsRef<str>,

    let s = s.as_ref();

    let beginning = match s.chars().next()
    Some(c) => c.to_lowercase().to_string(),
    None => return "".to_string(),
    ;

    match beginning.as_ref() "u" => s.to_string() + "-hay",
    _ => (&s[1..]).to_string() + "-" + &beginning + "ay",



    #[allow(dead_code)]
    // Overly complicated version of pigifying a word that is probably a tiny, tiny bit faster...
    fn pigify_word_complex<S>(s: S) -> String
    where
    S: AsRef<str>,

    // Using this trait give you the `write_str` and `write_char` methods on
    // `String`, which are used below (see pigify).
    use std::fmt::Write;

    // After this line, s will be a `&str`.
    let s = s.as_ref();

    let beginning = match s.chars().next()
    // Would use `to_lowercase` here, which returns an iterator of chars because
    // I guess the lowercase equivalent of some utf-8 characters are actually
    // sets of more than one character. So we also call to_string() on the iterator
    // to turn it into a String.
    Some(c) => c.to_lowercase().to_string(),
    // Return an empty string if someone provides an empty S as input.
    None => return "".to_string(),
    ;

    // You know the maximum possible size of the String you will be returning; so
    // when you allocate it, tell Rust to reserve enough capacity so it
    // won't have to do any reallocations as it writes data into it.
    let mut output = String::with_capacity(s.len() + beginning.len() + 3);

    match beginning.as_ref() "e"

    // Final note: I don't think any of the unwraps above can ever fail,
    // but someone please correct me if I'm wrong.

    output


    ```





    share|improve this answer











    $endgroup$

















      0












      $begingroup$

      mod string_man 
      // This is needed to handle caller passing you multiple words.
      // Although it still won't handle punctuation correctly.
      // "Hello world" works, for example, but "Hello world." doesn't.
      // I ran out of steam to solve this problem; so I leave it as
      // an exercise :). There are many things a caller could pass
      // here that probably won't do what you want
      pub fn pigify<S>(s: S) -> String where S: AsRef<str>
      let mut output = String::new();
      let mut first = true;
      for word in s.as_ref().split_whitespace()
      let s = pigify_word_simple(word);
      if first
      output += &s;
      first = false;
      continue;

      output += " ";
      output += &s;

      output


      // Simple version of pigifying a word that I would probably do in practice...
      fn pigify_word_simple<S>(s: S) -> String
      where
      S: AsRef<str>,

      let s = s.as_ref();

      let beginning = match s.chars().next()
      Some(c) => c.to_lowercase().to_string(),
      None => return "".to_string(),
      ;

      match beginning.as_ref() "u" => s.to_string() + "-hay",
      _ => (&s[1..]).to_string() + "-" + &beginning + "ay",



      #[allow(dead_code)]
      // Overly complicated version of pigifying a word that is probably a tiny, tiny bit faster...
      fn pigify_word_complex<S>(s: S) -> String
      where
      S: AsRef<str>,

      // Using this trait give you the `write_str` and `write_char` methods on
      // `String`, which are used below (see pigify).
      use std::fmt::Write;

      // After this line, s will be a `&str`.
      let s = s.as_ref();

      let beginning = match s.chars().next()
      // Would use `to_lowercase` here, which returns an iterator of chars because
      // I guess the lowercase equivalent of some utf-8 characters are actually
      // sets of more than one character. So we also call to_string() on the iterator
      // to turn it into a String.
      Some(c) => c.to_lowercase().to_string(),
      // Return an empty string if someone provides an empty S as input.
      None => return "".to_string(),
      ;

      // You know the maximum possible size of the String you will be returning; so
      // when you allocate it, tell Rust to reserve enough capacity so it
      // won't have to do any reallocations as it writes data into it.
      let mut output = String::with_capacity(s.len() + beginning.len() + 3);

      match beginning.as_ref() "e"

      // Final note: I don't think any of the unwraps above can ever fail,
      // but someone please correct me if I'm wrong.

      output


      ```





      share|improve this answer











      $endgroup$















        0












        0








        0





        $begingroup$

        mod string_man 
        // This is needed to handle caller passing you multiple words.
        // Although it still won't handle punctuation correctly.
        // "Hello world" works, for example, but "Hello world." doesn't.
        // I ran out of steam to solve this problem; so I leave it as
        // an exercise :). There are many things a caller could pass
        // here that probably won't do what you want
        pub fn pigify<S>(s: S) -> String where S: AsRef<str>
        let mut output = String::new();
        let mut first = true;
        for word in s.as_ref().split_whitespace()
        let s = pigify_word_simple(word);
        if first
        output += &s;
        first = false;
        continue;

        output += " ";
        output += &s;

        output


        // Simple version of pigifying a word that I would probably do in practice...
        fn pigify_word_simple<S>(s: S) -> String
        where
        S: AsRef<str>,

        let s = s.as_ref();

        let beginning = match s.chars().next()
        Some(c) => c.to_lowercase().to_string(),
        None => return "".to_string(),
        ;

        match beginning.as_ref() "u" => s.to_string() + "-hay",
        _ => (&s[1..]).to_string() + "-" + &beginning + "ay",



        #[allow(dead_code)]
        // Overly complicated version of pigifying a word that is probably a tiny, tiny bit faster...
        fn pigify_word_complex<S>(s: S) -> String
        where
        S: AsRef<str>,

        // Using this trait give you the `write_str` and `write_char` methods on
        // `String`, which are used below (see pigify).
        use std::fmt::Write;

        // After this line, s will be a `&str`.
        let s = s.as_ref();

        let beginning = match s.chars().next()
        // Would use `to_lowercase` here, which returns an iterator of chars because
        // I guess the lowercase equivalent of some utf-8 characters are actually
        // sets of more than one character. So we also call to_string() on the iterator
        // to turn it into a String.
        Some(c) => c.to_lowercase().to_string(),
        // Return an empty string if someone provides an empty S as input.
        None => return "".to_string(),
        ;

        // You know the maximum possible size of the String you will be returning; so
        // when you allocate it, tell Rust to reserve enough capacity so it
        // won't have to do any reallocations as it writes data into it.
        let mut output = String::with_capacity(s.len() + beginning.len() + 3);

        match beginning.as_ref() "e"

        // Final note: I don't think any of the unwraps above can ever fail,
        // but someone please correct me if I'm wrong.

        output


        ```





        share|improve this answer











        $endgroup$



        mod string_man 
        // This is needed to handle caller passing you multiple words.
        // Although it still won't handle punctuation correctly.
        // "Hello world" works, for example, but "Hello world." doesn't.
        // I ran out of steam to solve this problem; so I leave it as
        // an exercise :). There are many things a caller could pass
        // here that probably won't do what you want
        pub fn pigify<S>(s: S) -> String where S: AsRef<str>
        let mut output = String::new();
        let mut first = true;
        for word in s.as_ref().split_whitespace()
        let s = pigify_word_simple(word);
        if first
        output += &s;
        first = false;
        continue;

        output += " ";
        output += &s;

        output


        // Simple version of pigifying a word that I would probably do in practice...
        fn pigify_word_simple<S>(s: S) -> String
        where
        S: AsRef<str>,

        let s = s.as_ref();

        let beginning = match s.chars().next()
        Some(c) => c.to_lowercase().to_string(),
        None => return "".to_string(),
        ;

        match beginning.as_ref() "u" => s.to_string() + "-hay",
        _ => (&s[1..]).to_string() + "-" + &beginning + "ay",



        #[allow(dead_code)]
        // Overly complicated version of pigifying a word that is probably a tiny, tiny bit faster...
        fn pigify_word_complex<S>(s: S) -> String
        where
        S: AsRef<str>,

        // Using this trait give you the `write_str` and `write_char` methods on
        // `String`, which are used below (see pigify).
        use std::fmt::Write;

        // After this line, s will be a `&str`.
        let s = s.as_ref();

        let beginning = match s.chars().next()
        // Would use `to_lowercase` here, which returns an iterator of chars because
        // I guess the lowercase equivalent of some utf-8 characters are actually
        // sets of more than one character. So we also call to_string() on the iterator
        // to turn it into a String.
        Some(c) => c.to_lowercase().to_string(),
        // Return an empty string if someone provides an empty S as input.
        None => return "".to_string(),
        ;

        // You know the maximum possible size of the String you will be returning; so
        // when you allocate it, tell Rust to reserve enough capacity so it
        // won't have to do any reallocations as it writes data into it.
        let mut output = String::with_capacity(s.len() + beginning.len() + 3);

        match beginning.as_ref() "e"

        // Final note: I don't think any of the unwraps above can ever fail,
        // but someone please correct me if I'm wrong.

        output


        ```






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Feb 23 at 0:21

























        answered Feb 22 at 23:48









        brianbrian

        363




        363



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Code Review Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            Use MathJax to format equations. MathJax reference.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f212726%2fpig-latin-in-rust%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            कुँवर स्रोत दिक्चालन सूची"कुँवर""राणा कुँवरके वंशावली"

            Why is a white electrical wire connected to 2 black wires?How to wire a light fixture with 3 white wires in box?How should I wire a ceiling fan when there's only three wires in the box?Two white, two black, two ground, and red wire in ceiling box connected to switchWhy is there a white wire connected to multiple black wires in my light box?How to wire a light with two white wires and one black wireReplace light switch connected to a power outlet with dimmer - two black wires to one black and redHow to wire a light with multiple black/white/green wires from the ceiling?Ceiling box has 2 black and white wires but fan/ light only has 1 of eachWhy neutral wire connected to load wire?Switch with 2 black, 2 white, 2 ground and 1 red wire connected to ceiling light and a receptacle?

            चैत्य भूमि चित्र दीर्घा सन्दर्भ बाहरी कडियाँ दिक्चालन सूची"Chaitya Bhoomi""Chaitya Bhoomi: Statue of Equality in India""Dadar Chaitya Bhoomi: Statue of Equality in India""Ambedkar memorial: Centre okays transfer of Indu Mill land"चैत्यभमि