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

Multi tool use
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
$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'
rust pig-latin
$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.
add a comment |
$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'
rust pig-latin
$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
add a comment |
$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'
rust pig-latin
$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
rust pig-latin
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
add a comment |
$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
add a comment |
1 Answer
1
active
oldest
votes
$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
```
$endgroup$
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
$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
```
$endgroup$
add a comment |
$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
```
$endgroup$
add a comment |
$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
```
$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
```
edited Feb 23 at 0:21
answered Feb 22 at 23:48
brianbrian
363
363
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
GWAWbekgoKk7 RqGCupKcPUG0VlketyiI G2w5Jk4p
$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